代码A:
string a = "abc";
for(int i=0;i<1000;i++){
Console.WriteLine(a);
}代码B:
for(int i=0;i<1000;i++){
Console.WriteLine("abc");
}是不是代码A性能更好?
string a = "abc";
for(int i=0;i<1000;i++){
Console.WriteLine(a);
}代码B:
for(int i=0;i<1000;i++){
Console.WriteLine("abc");
}是不是代码A性能更好?
{
Stopwatch sw1 = new Stopwatch();
int times = 100000;
//代码A:
string a = "abc";
sw1.Start();
for (int i = 0; i < times; i++)
{
Console.WriteLine(a);
}
sw1.Stop();
TimeSpan ts1 = sw1.Elapsed;
//代码B:
Stopwatch sw2 = new Stopwatch();
sw2.Start();
for (int i = 0; i < times; i++)
{
Console.WriteLine("abc");
}
sw2.Stop();
TimeSpan ts2 = sw2.Elapsed;
Console.WriteLine("A总时间:{0}ms,B总时间:{1}ms", ts1.TotalMilliseconds, ts2.TotalMilliseconds);
Console.ReadKey();
嗯 确实是debug版
我还release也是B好 10万次大概是8000ms:4000ms
发布版运行结果。
你这样也不是没见过,之前见过一个java的程序员拿java发布好的东西跟c#debug比较说c#效率差的。
我还release也是B好 10万次大概是8000ms:4000ms
这些差异是其他原因导致的,不是实际的代码因素,你看看il代码就发现结果都是一样的。
奇怪了我用的是release
奇怪了我用的是release字符串直接写在Console.Write里比用变量要来的快
毕竟ldstr肯定比ldloc.s要来的快
至于IL执行的时候优化能做的怎么样就不知道了
不过也不会到你这种2倍的差距