【C#代码性能测试】循环创建坐标的最佳选择
前言
在开发过程中遇到了创建二维坐标的性能问题,分别使用Point类、元组、字符串三种方式测试在运行一亿次的情况下消耗时间的不同不同代码花费时间的长短,现将结果分享给大家。
提示:不同环境可能结果不同,仅供参考。
开发环境
- Windows7
- vscode2019
代码分享
第一种:通过Point类进行坐标创建(推荐)
C#代码:
//作者:好先生FX
var pointList = new List<Point>();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int x = 0; x < 10000; x++)
{
for (int y = 0; y < 10000; y++)
{
var p = new Point(x, y);
pointList.Add(p);
}
}
stopwatch.Stop();
Debug.WriteLine("运行时间:" + stopwatch.ElapsedMilliseconds);
运行5次结果如下:
- 运行时间:1584
- 运行时间:1543
- 运行时间:1540
- 运行时间:1543
- 运行时间:1560
第二种:通过元组进行坐标创建
C#代码:
var pointList = new List<Tuple<int, int>>();//作者:好先生FX
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int x = 0; x < 10000; x++)
{
for (int y = 0; y < 10000; y++)
{
pointList.Add(new Tuple<int, int>(x, y));
}
}
stopwatch.Stop();
Debug.WriteLine("运行时间:" + stopwatch.ElapsedMilliseconds);
运行5次结果如下:
- 运行时间:9998
- 运行时间:9907
- 运行时间:9814
- 运行时间:11509
- 运行时间:10547
第三种:通过字符串逗号分隔进行坐标创建
C#代码:
var pointList = new List<string>();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int x = 0; x < 10000; x++)
{
for (int y = 0; y < 10000; y++)
{
pointList.Add(x + "," + y);
}
}//作者:好先生FX
stopwatch.Stop();
Debug.WriteLine("运行时间:" + stopwatch.ElapsedMilliseconds);
运行5次结果如下:
- 运行时间:63049
- 运行时间:67412
- 运行时间:60787
- 运行时间:60811
- 运行时间:59766
结语
通过以上测试结果,推荐大家使用Point类进行二维坐标创建
博客园-本文作者(好先生FX http://www.cnblogs.com/hxsfx)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。