md5演算法效能測試
本次實驗的主要目的是測試中大量使用md5運算是否對**或者系統帶來效能方面的影響
。根據實驗目的,設計了如下三個場景:
1. 單執行緒下
執行5000次
計算平均時間(分別運算100k;200k;300k;字元)
2. 20個執行緒
共執行5000次
計算平均時間(分別運算100k;200k;300k;字元)
3. 20個執行緒
持續運算3小時壓力測試
計算平均時間和cup占用情況(運算300k字元)
cpuintel(r) core(tm)2 duo cpu e7500 2.93g記憶體
3.0g
本人使用pc(非專用伺服器)
stopwatch sw = new
stopwatch();
arraylist
arry = new
arraylist();
for (int i = 0; i < 5000; i++)
//md5演算法
private
void md5hash(byte bytes)
int maxthread = 20; decimal totle = 0;
console.writeline("
,datetime.now);
stopwatch sw = new
stopwatch();
sw.start();
manualresetevent manualevents =new
manualresetevent[maxthread];
for (int i = 0; i < maxthread;i++)
waithandle.waitall(manualevents);
運算字串大小
執行次數
響應時間(毫秒)
20執行緒
響應時間
100k
5000
0.14ms
0.153ms(20個執行緒)
200k
5000
0.32ms
0.31ms(20個執行緒)
300k
5000
0.54ms
0.471ms(20個執行緒)
具體場景設計如下:
每個執行緒執行次數100000次
執行執行緒數20個
每次執行間隔時間 0.1s
每次運算位元組數
相當於300k大小的網頁
開始時間: 15:07:58 結束時間16:39:46其中程式執行總時長11053.451秒約合 3小時4分
演算法平均運算時間 0.73545毫秒
具體執行結果如下
根據perfmon跟蹤的cpu變化
如下圖
根據上圖可以看出在持續3小時的演算法測試中 cup平均使用率只有5.487%,需要指出的是這個cpu的使用率是整個實驗程式的和windows本身其它內部程式的耗損之和,真正md5演算法只佔其中的一部分,在上述實驗場景的測試中我們發現cpu的使用率長期穩定在8%,說明演算法可能佔據了一部分cpu,但是這個佔用率還是比較小的。
綜上所述
在單獨的演算法測試中md5耗時均小於1毫秒,時間很短,在長達3小時的多執行緒壓力測試情況下,演算法的平均演算法用時0.74ms,cpu佔用率大部分維持在低位狀態8%,但是實際的應用場景運算頻率要遠遠小於上述實驗場景,加之我們只是採用普通的pc機進行的測試,所以在實際應用中md5演算法對伺服器cpu的壓力幾乎可以忽略掉。
md5效率測試
華為雲主機 1c1g docker php7 cli function getelapst targs,count t2 microtime true return t2 t1 1000 1000 elaps1 getelapst str repeat hello 10 1000 echo 字串長度...
MD5演算法 加密
ps 在開發的某些業務中,涉及到一些明文不太安全的時候會用到加密演算法,常用的一般有md5加密 des aes 等加密方式這裡自己了解了一下md5加密。1 md5演算法加密 也就是 資訊 摘要演算法5 就是把乙個任意長度的位元組串變換成一定長的十六進製制數字串 public static strin...
MD5演算法實現
md5.h ifndef md5 h define md5 h typedef struct md5 ctx 非線性輔助函式 define f x,y,z x y x z define g x,y,z x z y z define h x,y,z x y z define i x,y,z y x z...