記憶體複製的速度居然和記憶體的內容相關

2022-03-06 06:33:12 字數 701 閱讀 9922

memcpy 和 乙個位元組乙個位元組的複製的乙個區別就是,memcpy 可以複製乙個cpu 的字 而 單位元組複製只能複製乙個位元組。

但是,今天還發現了乙個很重要的特點,複製的速度 還和 記憶體的內容相關,如果目標記憶體 和 當前記憶體的內容差不多,發現

居然複製速度要快一些。

前面文章中,我說的最後一種速度是 96ms, 是錯誤的。

測試**如下:

t = clock();

strcpy1(dest, src); //我的複製方法 140ms

printf("%d ms\n", clock() - t);

t = clock();

strcpy(dest, src); //系統函式的複製方法  96ms

printf("%d ms \n", clock() - t);

t = clock();

strcpy(dest, src); //系統函式的複製方法  140ms

printf("%d ms \n", clock() - t);

t = clock();

strcpy1(dest, src); //我的複製方法 96ms

printf(" %d ms\n", clock() - t);

如果你測試一下 用memcpy,可以發現這 96ms就是memcpy複製這個記憶體區域的速度。

具體原因不知道是為什麼。哪位高手可以告訴我。

固態硬碟的速度和記憶體的速度差距

記憶體的基本構架和固態硬碟發熱構架完全不同,固態硬碟的儲存晶元是非易失性儲存介質 nvram 也就是沒有電源後內部儲存的資料不會丟失。nand型快閃儲存器為例,它的隨機訪問速度慢,而且寫入資料之前還要對區塊進行擦除,使得寫速度僅有讀取速度的1 2 1 4,這種現象在目前廣泛使用的mlc nand上更...

Delphi 的記憶體操作函式 5 複製記憶體

movememory copymemory 的功能是一模一樣的,都是複製記憶體,都是呼叫 move 過程 movememory copymemory 操作指標 move 操作實體.還要注意,它們的引數位置不一樣 舉例 var buf1,buf2 array 0.9 of ansichar begin...

Delphi 的記憶體操作函式 5 複製記憶體

movememory copymemory 的功能類似,都是複製記憶體,都是呼叫 move 過程 movememory copymemory 操作指標 move 操作實體.還要注意,它們的引數位置不一樣 varbuf1,buf2 array 0.9 of ansichar begin buf1 01...