有人知道.NET 4是否更有效吗?
从以下简单的代码片段来看,它似乎更慢。使用.NET 4.0花了大约630ms,使用.NET 3.5 SP1花了大约530ms。
你得到了什么结果?有什么建议?我正在考虑将我的应用程序转换为.NET 4.0,但这些结果让我失望。
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i <= 1000000; i++)
{
string s = "asdfx54545454545454545454545454545454545454545454545454545454545454545454545454adsf4asdf";
int j = s.IndexOf("asdf");
s.IndexOf("asdf", j);
s = s + "zxcv";
s = s + "gtjiortege";
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.ReadLine();
答案 0 :(得分:6)
答案 1 :(得分:0)
是.Net 4.0比3.5更有效。在我的例子中,我有一个在循环中具有指数函数的数值算法。我能够确定性地再现~2倍的速度。看起来主要的胜利来自CRT,而不是JIT。 8.0 / 3.5 CRT使用x87浮点指令,但10.0 / 4.0 CRT使用SSE。 JIT使用CRT进行Log / Log10和Exp调用。看起来C运行时使用的SSE指令是胜利的主要来源,尽管JIT编码也更好。