亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Console.WriteLine(i + “”)

為什么 Console.WriteLine(i + “”)

C#
呼喚遠方 2022-08-20 17:22:06
我測試了 、 和 的速度。( 曾是一個 )結果如下:i.ToString()i + ""Console.WriteLine(i+"")Console.WriteLine(i)iinti.ToString()(149 毫秒)比 (202 毫秒) 快。i + ""但是當我使用時(743毫秒)比(927毫秒,根據TextWriter源Consolor.WriteLine內部調用)快得多。Console.WriteLineConsole.WriteLine(i + "")Console.WriteLine(i)ToString()現在我的問題是:為什么與?i + ""Console.WriteLine()筆記:我對非控制臺內容使用了 1,000,000 次迭代,為控制臺測試使用了 1,000 次迭代。我使用 .NET Framework 4.7.1該代碼是使用 Visual Studio 2017(版本 15.9.4)中的調試配置編譯的?!鞍l布”給出了類似的結果。項目類型為控制臺應用程序。代碼可作為 GitHub Gist 提供
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

當我查看源代碼時,我看到了這個:


i + "" = String.Concat(object)哪個叫聲 還有一個.所以它更慢。obj.ToString()String.Concat(object)


1st way) 使用 Console.WriteLine,它很簡單:


    public static void WriteLine(String value)

    {

        Out.WriteLine(value);

    }

https://referencesource.microsoft.com/#mscorlib/system/console.cs,5ac7c4fda643413b


在內部,它創建 1 個值為 ' \r\n' 的緩沖區,并且只調用一次。.Write(char[], int, int)


第二種方式)當你用int調用它時,它是不同的。


    public virtual void WriteLine(int value) {

        Write(value);

        WriteLine();

    }

https://referencesource.microsoft.com/#mscorlib/system/console.cs,82d5745bf4a5ecc6


這樣它就會調用兩次。這可能是那種放緩,但我不能確定。它只是提示,問題可能在哪里。Write(char[], int, int)


編輯:


此外,第二種方式,它調用以獲取數字的字符串表示形式,這是另一個開銷,可以稍微減慢它的速度,因為它每次都可以獲取該提供程序的實例。https://referencesource.microsoft.com/#mscorlib/system/globalization/numberformatinfo.cs,9c4284b5db21c23aint.ToString(IFormatProvider)


查看完整回答
反對 回復 2022-08-20
  • 1 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號