【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次结果如下:

  1. 运行时间:1584
  2. 运行时间:1543
  3. 运行时间:1540
  4. 运行时间:1543
  5. 运行时间: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次结果如下:

  1. 运行时间:9998
  2. 运行时间:9907
  3. 运行时间:9814
  4. 运行时间:11509
  5. 运行时间: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次结果如下:

  1. 运行时间:63049
  2. 运行时间:67412
  3. 运行时间:60787
  4. 运行时间:60811
  5. 运行时间:59766

结语

通过以上测试结果,推荐大家使用Point类进行二维坐标创建

posted @ 2022-09-28 08:56  好先生FX  阅读(48)  评论(0编辑  收藏  举报