[英]Why is my c# code making going left and right much faster than forward and backwards
[英]Why my C# code is faster than my C code?
我在Windows操作系統上啟動這兩個控制台應用程序。 這是我的C#代碼
int lineCount = 0;
StreamWriter writer = new StreamWriter("txt1.txt",true);
for (int i = 0; i < 900; i++)
{
for (int k = 0; k < 900; k++)
{
writer.WriteLine("This is a new line" + lineCount);
lineCount++;
}
}
writer.Close();
Console.WriteLine("Done!");
Console.ReadLine();
這是我的C代碼。 我假設它是C,因為我包括cstdio
並使用標准的fopen
和fprintf
函數。
FILE *file = fopen("text1.txt","a");
for (size_t i = 0; i < 900; i++)
{
for (size_t k = 0; k < 900; k++)
{
fprintf(file, "This is a line\n");
}
}
fclose(file);
cout << "Done!";
當我啟動C#程序時,我立即看到消息“完成!”。 當我啟動C ++程序(使用標准C函數)時,它等待至少2秒鍾才能完成,並向我顯示消息“完成!”。
我只是在玩耍來測試他們的速度,但現在我覺得我不知道很多東西。 有人可以向我解釋一下嗎?
注意:不可能重復“為什么C#運行速度比C ++快?”,因為我沒有提供任何控制台輸出,如“cout”或“Console.Writeline()”。 我只是比較文件流機制,它不包括任何可以中斷程序主要任務的干擾。
你正在比較蘋果和土豆。 您的C / C ++程序根本沒有進行任何緩沖。 如果你使用帶有緩沖的fstream你的結果會好很多:另見std :: fstream緩沖與手動緩沖(為什么10倍的手動緩沖增益)?
我認為這不是比較語言之間性能的合適方法。
無論如何c和c#是完全不同的野獸,當我認為主要的區別是C#是托管語言(有CLR在后台運行並做很多工作,如優化等)而C不是。
但正如我所說,兩者之間存在太多差異,無法在此進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.