gpt4 book ai didi

基本操作的C#性能

转载 作者:行者123 更新时间:2023-11-30 22:13:13 31 4
gpt4 key购买 nike

我找了几篇文章(包括SA中的一些问题),试图找到基本操作的成本。

但是,我尝试制作自己的小程序,以便自己进行测试。在尝试测试加法和减法时,我遇到了一些问题,我用简单的代码向您展示了这一点

       int a,i,j;
DateTime d1,d2;

a = 0;
d1= DateTime.Now;
for (i = 1; i <= 10000; i++)
for (j = 1; j <= 10000; j++)
a = a + 1;
d2=DateTime.Now;
Console.WriteLine("a=a+1\t1E8\t"+(d2-d1));

a = 0;
d1 = DateTime.Now;
for (i = 1; i <= 10000; i++)
for (j = 1; j <= 10000; j++)
a = a + 1;
d2 = DateTime.Now;
Console.WriteLine("a=a+1\t1E8\t" + (d2 - d1));

a = 0;
d1 = DateTime.Now;
for (i = 1; i <= 10000; i++)
for (j = 1; j <= 10000; j++)
a = a + 1;
d2 = DateTime.Now;
Console.WriteLine("a=a+1\t1E8\t" + (d2 - d1));

a = 0;
d1 = DateTime.Now;
for (i = 1; i <= 10000; i++)
for (j = 1; j <= 10000; j++)
a = a + 1;
d2 = DateTime.Now;
Console.WriteLine("a=a+1\t1E8\t" + (d2 - d1));
Console.ReadKey();

首先我声明了一些变量,然后我执行了 4 次相同的任务。每次我都做同样的事情。总是,结果如下:

a=a+1   1E8     00:00:00.2300230
a=a+1 1E8 00:00:00.2180218
a=a+1 1E8 00:00:00.2130213
a=a+1 1E8 00:00:00.2150215

a=a+1   1E8     00:00:00.2340000
a=a+1 1E8 00:00:00.2170000
a=a+1 1E8 00:00:00.2130000
a=a+1 1E8 00:00:00.2100000

这意味着第一次,它总是需要更长的时间来计算(大约长 5%)。所有其他时间,时间大致相同。

然后我只需在第一个 a=0; 之后添加行 a=0;。结果如下:

a=a+1   1E8     00:00:00.2210000
a=a+1 1E8 00:00:00.2170000
a=a+1 1E8 00:00:00.2200000
a=a+1 1E8 00:00:00.2170000

甚至

a=a+1   1E8     00:00:00.2160000
a=a+1 1E8 00:00:00.2160000
a=a+1 1E8 00:00:00.2200000
a=a+1 1E8 00:00:00.2230000

所以 3 个问题:

  1. 为什么在第一个示例中第一个循环比其余循环花费的时间更长?
  2. 为什么在第二个例子中所有的循环花费的时间差不多?
  3. 有没有比 Datetime 更好的计算时间间隔的方法?

个人视角:程序开始运行时需要初始化一些东西。通过添加一个额外的命令 (a=0),我给了程序进行初始化的时间。

POV 中的缺陷:当我将循环次数从 10^8 更改为 10^9 时,time1 和 time2 之间的差异应该再次为 ~0.015s(如果我的 POV 有效)。但现在又是 ~0.15s(再次意味着 ~5%)。如果我添加第二个 a=0,然后再次添加 time1~time2~time3~time4

最佳答案

第 3 个问题的答案 -

有没有比 Datetime 更好的计算时间间隔的方法?

使用 System.Diagnostics.Stopwatch 测量时差,因为它具有非常高的准确性。

关于基本操作的C#性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19289653/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com