簡體   English   中英

為什么我的C#代碼比我的C代碼快?

[英]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並使用標准的fopenfprintf函數。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM