看如下**,訪問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 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...