我不是在开玩笑.我有一个C#应用程序和一个C++应用程序.他们完全相同的东西,完全相同的代码量......
...... C#one运行得更快,不仅速度更快,而且速度提高了10倍.
这让我感到很奇怪,因为对于其中一个,我在调试器中运行C#应用程序,这应该减慢C#开始.然后,由于C#是带有巨大开销的字节码,使用.NET编译成带有一些额外功能的MSIL,这应该会减慢速度.虽然C++只是纯机器代码.
这是C#代码:
static void main()
{
ulong i = 0;
while (i < 100000000000)
{
Console.WriteLine(i);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这是C++代码
int main()
{
usigned long i = 0;
while (i < 100000000000)
{
cout << i << endl;
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
他们只是在计算并显示一个数字.C++将是1000,而C#将是7000.(快7倍)
我甚至尝试编译它们,并在没有调试器的情况下使用命令提示符运行它们:cplusplus.exe && csharp.exe
是的,我知道也许这个问题是"offtopic":P或者可能是"不清楚要求的是什么".:/但请,有人向我解释.
如果这很重要,我正在使用这个CPU:Intel i7 2.5 Ghz.
编辑:我做了cout << i <<"\n"; 想法,再加上std :: ios_base :: sync_with_stdio(false); 想法,没有任何运气或结果的变化.
编辑2:我尝试了C的printf(),它的速度要快得多.比C#快3倍.
人们告诉我IO流非常慢,所以我在没有写入控制台的情况下尝试了它们,C++仍然比C#快得多.
总之,Writeline()比cout快得多,而printf()比两者快得多.所以写入控制台是唯一减慢速度的因素.
TLDR:printf()获胜,而控制台写入减慢了东西.