14 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
1 沒必要糾結(jié)這個(gè)
2 目測(cè)第一個(gè)高。 因?yàn)榈谝粋€(gè)可以被編譯器優(yōu)化(release下去看, 結(jié)果應(yīng)該是不一樣的),
第一個(gè)結(jié)果永遠(yuǎn)不變, 因此可以直接被編譯器編譯成算好的結(jié)果
而第二個(gè), 因?yàn)檎{(diào)用了ToString, 編譯器不敢優(yōu)化。 所以應(yīng)該會(huì)慢一點(diǎn)。
?
不要太過(guò)相信“代碼跑出來(lái)的時(shí)間”, 因?yàn)橛锌赡苁菦]開優(yōu)化, 或者被其他的因素影響, 等等。
這個(gè)我一般戲稱它為:測(cè)不準(zhǔn)原理。

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
第2條效率高,第一條的話應(yīng)該是先把1+1自動(dòng)toString之后又加上"",
而第二題省掉了加的部分。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
第一句有1次裝箱,1+1+""(即2+"")調(diào)用了String.Concat方法,參數(shù)為object類型,因此需要將2(int類型)裝箱。第二句是2.ToString()調(diào)用了System.Int32的ToString方法,沒有裝箱。因此第2句效率比第一句高. 經(jīng)過(guò)實(shí)際測(cè)試,各運(yùn)行10000次,第一句耗時(shí)4152Tick,第二句耗時(shí)2904Tick,測(cè)試環(huán)境windows8, vs2012 ultimate rtmrel, 控制臺(tái)程序,realease編譯。

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
第二句高,第二句應(yīng)該就是調(diào)用了int32的tostring()方法,第一句的話會(huì)自動(dòng)裝箱
- 14 回答
- 0 關(guān)注
- 460 瀏覽
添加回答
舉報(bào)