因為實驗的要求,需要清空乙個記憶體占用在 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...