不同記憶體區域的耗時操作

2021-08-03 01:25:50 字數 1462 閱讀 2049

空的for迴圈不耗效能,基本不耗時

#pragma mark - 耗時操作

- (void)longoperation

// 獲取時間差值

nslog(@"----:%f",cacurrentmediatime() - start);

}

列印結果:2017-06-19 18:57:25.465 01-模擬耗時操作[95446:4223426] —-:0.002655

操作記憶體的棧區不耗效能,基本不耗時,因為位址是連續的,定址簡單

#pragma mark - 耗時操作

- (void)longoperation

// 獲取時間差值

nslog(@"----:%f",cacurrentmediatime() - start);

}

列印結果:2017-06-19 19:00:02.243 01-模擬耗時操作[95474:4224838] —-:0.002460

操作記憶體的常量區不耗效能,相對不耗時,但是相對棧區要耗效能一些,記憶體控制項只開闢一次

#pragma mark - 耗時操作

- (void)longoperation

// 獲取時間差值

nslog(@"----:%f",cacurrentmediatime() - start);

}

列印結果:2017-06-19 19:03:57.907 01-模擬耗時操作[95515:4226915] —-:0.011038

#pragma mark - 耗時操作

- (void)longoperation

// 獲取時間差值

nslog(@"----:%f",cacurrentmediatime() - start);

}

列印結果:2017-06-19 19:17:28.997 01-模擬耗時操作[95598:4233527] —-:0.804514

i/o操作是非常耗效能的

#pragma mark - 耗時操作

- (void)longoperation

// 獲取時間差值

nslog(@"----:%f",cacurrentmediatime() - start);

}

列印結果:2017-06-19 19:11:29.560 01-模擬耗時操作[95554:4229094] —-:176.182018

耗時操作對ui互動影響:會卡死ui導致螢幕上的空間暫時無法執行操作

不同變數的儲存區域

記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集...

記憶體區域的布局

常見的記憶體空間分為 區 儲存可執行的 全域性資料區 儲存全域性變數和靜態變數 int a abcd 棧區 堆區 include include 動態分配記憶體 為什麼需要動態分配記憶體 1.儲存的資料 需要延長生命週期 2.乙個指標變數需要儲存資料,變數本身只能存位址 不能存資料,需要分配記憶體空...

類的記憶體儲存區域

眾所周知,new出來的變數,申請的記憶體都是儲存在堆區 理論上來說是這樣子的,但是有時候看到int i 千萬不要脫口而出是棧記憶體,因為不一定,尤其在c 類中,需要重點注意。如下 class cls memory include cls memory.h cls memory cls memory ...