Re: [問題] 相同程式 (/clr:pure) (/clr)速度差異
※ 引述《HeyScng ( )》之銘言:
: 前文恕刪
: : --
: : ◆ From: 140.96.63.154
: : → kazuto:template應該是編譯期行為吧? 02/09 11:46
: : → horngsh:推1F 02/09 13:55
: : 推 Ebergies:如果你用的是 C# Generics 的話, 那麼它是在執行期才產生 02/09 16:08
: : → Ebergies:但只會產生一次, 如果你使用次數夠多應該是不成問題才對 02/09 16:09
: 的確我也認為template instantiation在編譯期
: 但實際在 /clr 選項編譯下(win32 console) 速度卻有明顯差異
: 測試程式碼如連結 http://nopaste.csie.org/a6909
: 執行結果:
: TestFunction1 elapsed: 2312
: TestFunction1 elapsed: 422
: 因此才懷疑 template 誤用或希望可藉compiler設定加快速度
: 因為會使用 Windows form 與 許多dll 因此必須使用 /clr
: 不過主要目的只是想要重覆程式碼少一點
: 所以如果有其他寫法可以達成 也請指教
: 謝謝
我稍微修改你的sample 並測試了一下
測試碼 http://nopaste.csie.org/97f25
為了讓立足點相同並減少變因
讓每個測試函數都傳入function point
因為看過你的程式碼之後懷疑
可能是對TestFunction2 中的ReturnMax做了最佳化
結果是下面這三個都差不多慢
TestFunction2(data, result, WIDTH, HEIGHT, MASK_WIDTH, MASK_HEIGHT,
ReturnMax<unsigned short>);
TestFunction2(data, result, WIDTH, HEIGHT, MASK_WIDTH, MASK_HEIGHT,
ReturnMax2);
TestFunction1(data, result, WIDTH, HEIGHT, MASK_WIDTH, MASK_HEIGHT,
ReturnMax<T>);
所以跟template無關
--
体は剣で出来ている。 血潮は鉄で 心は硝子。
幾たびの戦場を越えて不敗。
ただの一度も敗走はなく、ただの一度も理解されない。
彼の者は常にひとり 剣の丘で勝利に酔う
故に、生涯に意味はなく。
その体は、きっと剣で出来ていた。 Fate/Staynight アーチャーより
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.37.57
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 9 篇):