打造自己的性能测试类
2017-06-19 15:17
274 查看
之前做性能测试老是零零散散的一个 Stopwatch,又一个Stopwatch ,去测试 方法的执行效率,从而进行验证。
为了方便使用,自己写一个好用的 性能测试类,目的在于方便好用,点到即可。
使用方式(如下,测试 NameValueCollection 与 Dictionary 的 性能):
代码如下:
为了方便使用,自己写一个好用的 性能测试类,目的在于方便好用,点到即可。
使用方式(如下,测试 NameValueCollection 与 Dictionary 的 性能):
static void Main(string[] args) { Console.WriteLine(new Action(() => { NameValueCollection nvc = new NameValueCollection(); for (int j = 0; j < 10; j++) { nvc.Add(j.ToString(), j.ToString()); } for (int j = 0; j < 10; j++) { string temp = nvc[j.ToString()].ToString(); } }).ForWatchMS(100000)); Console.WriteLine(new Action(() => { Dictionary<string, string> nvc = new Dictionary<string, string>(); for (int j = 0; j < 10; j++) { nvc.Add(j.ToString(), j.ToString()); } for (int j = 0; j < 10; j++) { string temp = nvc[j.ToString()].ToString(); } }).ForWatchMS(100000)); }
代码如下:
using System; using System.Diagnostics; public static class SpendTimeHelper { #region Action /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS(this Action act, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { act.Invoke(); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T>(this Action<T> act, T t, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { act.Invoke(t); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2>(this Action<T1, T2> act, T1 t1, T2 t2, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int i = 0; i < forCount; i++) { act.Invoke(t1, t2); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3>(this Action<T1, T2, T3> act, T1 t1, T2 t2, T3 t3, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { act.Invoke(t1, t2, t3); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3, T4>(this Action<T1, T2, T3, T4> act, T1 t1, T2 t2, T3 t3, T4 t4, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { act.Invoke(t1, t2, t3, t4); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="act"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3, T4, T5>(this Action<T1, T2, T3, T4, T5> act, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { act.Invoke(t1, t2, t3, t4, t5); } watch.Stop(); return watch.ElapsedMilliseconds; } #endregion #region Func /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T>(this Func<T> fun, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, TResult>(this Func<T1, TResult> fun, T1 t1, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(t1); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, TResult>(this Func<T1, T2, TResult> fun, T1 t1, T2 t2, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(t1, t2); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3, TResult>(this Func<T1, T2, T3, TResult> fun, T1 t1, T2 t2, T3 t3, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(t1, t2, t3); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3, T4, TResult>(this Func<T1, T2, T3, T4, TResult> fun, T1 t1, T2 t2, T3 t3, T4 t4, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(t1, t2, t3, t4); } watch.Stop(); return watch.ElapsedMilliseconds; } /// <summary> /// 执行forCount次的花费时间(ms) /// </summary> /// <param name="fun"></param> /// <param name="forCount">执行次数</param> /// <returns>花费时间:毫秒</returns> public static long ForWatchMS<T1, T2, T3, T4, T5, TResult>(this Func<T1, T2, T3, T4, T5, TResult> fun, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, long forCount) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int j = 0; j < forCount; j++) { fun.Invoke(t1, t2, t3, t4, t5); } watch.Stop(); return watch.ElapsedMilliseconds; } #endregion }
相关文章推荐
- 重磅 | 打造云端压力测试产品,准确感知性能瓶颈
- Struct 和 Class 性能有差异吗?自己测试
- 尴尬了,在 Google 自己的 JS 性能测试软件中 Chrome 仅列第三[古奥,2010.3.20](朱佳峰)
- httpclient自己写接口性能测试脚本
- poi 和jxl的性能比较,借鉴别人的,本人没有测试过,不过感觉自己可以接收这种解释
- 大流量网站性能优化:一步一步打造一个适合自己的BigRender插件(转)
- 五分钟打造自己的sql性能分析工具
- 拷机软件 从软件测试中得知自己机器的性能
- 开发性能测试工具——自己动手实现迭代功能
- 一次Redis 的性能测试和问题 [问题已经自己解决,见文章最后]
- 大流量网站性能优化:一步一步打造一个适合自己的BigRender插件
- 关于侯垒的自增字段和GUID字段性能对比文章的一些自己的分析(没有测试,纯粹分析)
- 快速打造自己的测试管理小工具
- 自己对YCSB性能测试工具使用
- 用DNSPod和Squid打造自己的CDN (八) 测试并运行SQUID
- 一步一步打造WebIM(3)——性能测试
- 蛙蛙推荐:创建自己的性能计数器及压力测试入门
- 从0到1:打造移动端H5性能测试平台
- iOS--打造自己的测试平台,彻底摆脱产品和测试的频繁装版本--TestFlight
- 使用FDDB人脸样本检测库,测试自己的人脸检测算法性能并生成ROC曲线。