哪個訪問速度快!

2021-04-16 02:53:03 字數 1157 閱讀 4029

看如下**,訪問c,和p的資料,哪乙個更快,還是一樣?

void main()

這還有區別?有也,我也是看了別人的分析,才明白。

c為陣列,指向棧記憶體, p為指標,指向堆記憶體

賦值方式不同:

11:       char c = "1234567890";彙編**如下:

0040d6c9   mov         eax,[string "1234567890" (00422fb4)]

0040d6ce   mov         dword ptr [ebp-10h],eax

0040d6d1   mov         ecx,dword ptr [string "1234567890"+4 (00422fb8)]

0040d6d7   mov         dword ptr [ebp-0ch],ecx

0040d6da   mov         dx,word ptr [string "1234567890"+8 (00422fbc)]

0040d6e1   mov         word ptr [ebp-8],dx

0040d6e5   mov         al,[string "1234567890"+0ah (00422fbe)]

0040d6ea   mov         byte ptr [ebp-6],al

12:       char *p ="1234567890";彙編**如下:

0040d6ed   mov         dword ptr [ebp-14h],offset string "1234567890" (00422fb4)

訪問方式如下:

13:       a = c[1];

0040d6f4   mov         cl,byte ptr [ebp-0fh]

0040d6f7   mov         byte ptr [ebp-4],cl

14:       a = p[1];

0040d6fa   mov         edx,dword ptr [ebp-14h]

0040d6fd   mov         al,byte ptr [edx+1]

0040d700   mov         byte ptr [ebp-4],al

可見陣列訪問更快呀!

單鏈表與List究竟哪個遍歷速度快?

單鏈表與list究竟哪個遍歷速度快?firelong雄文又起,不過說實話,可能是這篇文章寫的太簡單了,其中的理由和結論都聽得不是很明白。當然有一段話的意思很清楚 原話 c 事件的背後是乙個委託鍊錶 單鏈表 單鏈表的遍歷呼叫效能遠低於陣列鍊錶 list 這句話讓我比較納悶,因為從我的直覺來說,兩種做法...

exp速度快命令優化

conventional path export和direct path export 從oracle7的release7.3開始,oracle開始在exp工具中提供兩種方法匯出表的資料 direct path匯出和conventional path匯出。通過exp的引數direct來判斷選用那種匯...

Redis 為什麼速度快

1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...