gpt4 book ai didi

c# - 当我对一个程序进行采样分析时,它实际上运行得比不进行分析更快,这是怎么回事?

转载 作者:太空狗 更新时间:2023-10-30 00:56:31 25 4
gpt4 key购买 nike

我使用 DotTrace 4.5 性能

Release模式时间:

 2400000000
Basic: 00:00:08.8051103
2400000000
Five: 00:00:09.1561338
2400000000
Overload: 00:00:16.3740938
2400000000
IListtoFive: 00:00:15.5841445

在 Release模式下进行分析的时间。

 2400000000
Basic: 00:00:01.0048224
2400000000
Five: 00:00:03.5416982
2400000000
Overload: 00:00:11.8009959
2400000000
IListtoFive: 00:00:11.2568770

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace testLineIndex
{

class Program
{
static long Five(int s0, int s1, int s2, int s3, int s4)
{
return s4 + 100 * s3 + 10000 * s2 + 1000000 * s1 + 100000000 * s0;
}

static long Overload(IList<int> line)
{
return Five(line[0], line[1], line[2], line[3], line[4]);
}

static long IListtoFive(IList<int> line)
{
return line[0]+100* line[1]+10000* line[2]+1000000* line[3]+100000000*line[4];
}

static void Main(string[] args)
{
Stopwatch watch = new Stopwatch();

long testSize = 400000000;
//List<int> myList = new List<int> { 1, 2, 3, 4, 5 };
int[] myList = new int[] { 1, 2, 3, 4, 5 };
long checksum = 0;
watch.Start();
for (long i = 0; i < testSize; i++)
{
long ret = Five(1,2,3,4,5);
checksum += ret % 9;
}
watch.Stop();
Console.WriteLine(checksum);
Console.WriteLine("Basic: {0}", watch.Elapsed);

checksum = 0;
watch.Restart();
for (long i = 0; i < testSize; i++)
{
long ret = Five(myList[0], myList[1], myList[2], myList[3], myList[4]);
checksum += ret % 9;
}
watch.Stop();
Console.WriteLine(checksum);
Console.WriteLine("Five: {0}",watch.Elapsed);

checksum = 0;
watch.Restart();
for (long i = 0; i < testSize; i++)
{
long ret = Overload(myList);
checksum += ret % 9;
}
watch.Stop();
Console.WriteLine(checksum);
Console.WriteLine("Overload: {0}", watch.Elapsed);

checksum = 0;
watch.Restart();
for (long i = 0; i < testSize; i++)
{
long ret = IListtoFive(myList);
checksum += ret % 9;
}
watch.Stop();
Console.WriteLine(checksum);
Console.WriteLine("IListtoFive: {0}", watch.Elapsed);
Console.ReadKey();
}
}
}

最佳答案

我怀疑是调试器。即使您在 Release模式下运行它,从 VS 运行它也会附加调试器,这会大大降低它的速度。

关于c# - 当我对一个程序进行采样分析时,它实际上运行得比不进行分析更快,这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517024/

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