c 中用std memset重置大陣列的速度

2021-10-25 11:38:36 字數 1527 閱讀 6521

因為實驗的要求,需要清空乙個記憶體占用在 1~100m 的大陣列,故對 std::memset() 處理各種長度的陣列所花時間產生了興趣。寫了一些測試**來計算每位元組所花時間。測試環境,使用win10,intel i7 8700,用mingw64編譯,使用c++11標準。

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

class

ptime

;void

startt()

;void

stopt()

;double

time()

;private

: large_integer la1,la2,tc;};

void

test

(vector<

double

>

&time,vector<

int>

&tablesize)

++j;

t1.stopt()

;if(t1.

time()

>10)

break;}

time.

push_back

(t1.

time()

/(double

)j);

} t1.

stopt()

; tablesize.

push_back

(size)

;delete

table;}}

intmain()

}

每個長度的陣列我都測量了10s以上,準確度可以保證。

最後的測量結果如下:

size :         10               268.614  fs/byte

size : 100 40.4548 fs/byte

size : 1000 15.2985 fs/byte

size : 10000 15.0947 fs/byte

size : 100000 18.3826 fs/byte

size : 1000000 21.341 fs/byte

size : 10000000 29.6872 fs/byte

size : 100000000 61.9106 fs/byte

就結果而言,處理1k~1m的陣列速度會很快。如果是100m的陣列,或許我可以10m處理10次?

歡迎各位在自己的機器上嘗試。如有錯誤,歡迎指正。

C 中用SharpZipLib dll實現壓縮解壓

using system using system collections generic using system text using system.io using icsharpcode.sharpziplib.checksums using icsharpcode.sharpziplib....

堆,堆在C 中用法

堆有最大堆與最小堆,也有對應的push和pop操作。在最大堆中,最大的元素在堆頂,pop會將最大的元素推出,最小堆則反之。c 中的堆,要基於向量使用。操作基於三個函式std make heap,std push heap,std pop heap,並且要配合push back與pop back使用。...

c 中用new分配記憶體

new的作用和使用方法如下 new的作用在於可以在程式執行階段動態分配記憶體,記憶體的大小在執行時根據需要確定,從而 高效利用記憶體空間。new的使用方法如下 typename pointer name new typename使用時使用者需要指定型別 指標型別和要開闢的記憶體儲存的資料型別 new...