MD5算法性能测试
来源:互联网 发布:泰克网络实验室招聘 编辑:程序博客网 时间:2024/06/16 21:13
MD5算法性能测试
(一) 实验目的
本次实验的主要目的是测试中大量使用MD5运算是否对网站或者系统带来性能方面的影响。
(二) 实验场景
根据实验目的,设计了如下三个场景:
1. 单线程下 运行5000次 计算平均时间(分别运算100K;200K;300k;字符)
2. 20个线程 共运行5000次 计算平均时间(分别运算100K;200K;300k;字符)
3. 20个线程 持续运算3小时压力测试 计算平均时间和cup占用情况(运算300k字符)
(三) 测试环境
CPU
Intel(R) Core(TM)2 Duo CPU E7500 2.93G
内存
3.0G
本人使用PC(非专用服务器)
(四) 主要测试程序
1. 单线程主要测试程序:
Stopwatch sw = new Stopwatch();
ArrayList arry = new ArrayList();
for (int i = 0; i < 5000; i++)
{
byte[] strByte = Encoding.UTF8.GetBytes(strValue);
sw.Start();
MD5Hash(strByte);
sw.Stop();
arry.Add(sw.Elapsed.TotalMilliseconds);
sw.Reset();
}
//md5算法
private void MD5Hash(byte[] bytes)
{
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
provider.ComputeHash(bytes);
}
2. 多线程主要测试程序
int MaxThread = 20; decimal totle = 0;
Console.WriteLine("执行开始时间:{0}",DateTime.Now);
Stopwatch sw = new Stopwatch();
sw.Start();
ManualResetEvent[] manualEvents =new ManualResetEvent[MaxThread];
for (int i = 0; i < MaxThread;i++)
{
manualEvents[i] = new ManualResetEvent(false);
MD5info objMD5info = new MD5info(i, manualEvents[i]);
MD5Test objMd5test = new MD5Test();
objMd5test.Size = 300;
ThreadPool.QueueUserWorkItem(new WaitCallback(objMd5test.MD5output),objMD5info);
}
WaitHandle.WaitAll(manualEvents);
(五) 测试结果:
1. 5000次测试结果
运算字符串大小
执行次数
响应时间(毫秒)
20线程 响应时间
100K
5000
0.14ms
0.153ms(20个线程)
200K
5000
0.32ms
0.31ms(20个线程)
300K
5000
0.54ms
0.471ms(20个线程)
2. 3小时持续运算压力测试结果
具体场景设计如下:
每个线程执行次数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算法性能测试
- [SRC_C]MD5算法及测试代码
- iOS对大文件MD5摘要性能测试
- Matlab遗传算法性能测试
- FFMPEG sws_scale算法性能测试
- 常见排序算法性能测试
- 测试选择排序算法性能
- 算法收集 - MD5 -02- 算法及测试代码
- md5测试
- RSA算法和AES算法性能测试
- MD5算法的C代码实现及测试
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
- 修练8年C++面向对象程序设计之体会
- 2013金山校园招聘Java笔试题
- C# 有关virsual studio 2008的智能感知体系
- 关于全局变量及静态变量和initializer element is not constant问题
- hadoop_apache_配置文件_2012_9_18
- MD5算法性能测试
- FIFO 先进先出模块中 理解 verilog 阻塞与非阻塞执行顺序
- vecter总结2
- 末日的爱情
- 怎么还会有盲点,ios内存管理
- abc
- android的sdk源码下载地址及关连方法 .
- Linux下的C编程实战
- JVM 垃圾回收算法