作者WPC001 (突然覺得自己是孤獨的...)
看板C_and_CPP
標題Re: [問題] 相同程式 (/clr:pure) (/clr)速度差異
時間Wed Feb 9 01:20:28 2011
※ 引述《HeyScng ( )》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VS2010
: CODE:
: http://nopaste.csie.org/ea1a4
: PROPERTY使用
: 純 MSIL Common Language Runtime 支援 (/clr:pure)
: RELEASE MODE執行時間650MS
: Common Language Runtime 支援 (/clr)
: RELEASE MODE執行時間2000MS
: 想請問如何使相同程式碼在Common Language Runtime 支援 (/clr)下
: 也能有相同的執行速度
: MSDN 也找不到有關為何速度會變慢的解釋
: 不知這方面是否有關鍵字可以GOOGLE
: 謝謝
不是很簡單嘛?
pure就只有managed可用
clr的話是混合式, 可能要處理managed與unmanaged等資料型態
混合式的好處是提供相容性, 可以沿用舊的unmanaged程式碼, 但缺點就是需要多檢查
而pure因為都只有MSIL, 所以一切行為都更可以掌握及預測,
也因此在執行期(預轉譯成機械碼時)可以提供更好的優化
你純粹只用.Net寫, 沒有老舊程式碼的負擔, 也不需要提供給非.net的程式用
此時你不用考慮, 僅用pure就對了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.73.3
推 HeyScng:首先謝謝您的答覆 由於程式我會呼叫其他dll 因此(/clr) 02/09 10:48
→ HeyScng:勢必得使用 演算法的執行時間亦須符合規格 主要是想用 02/09 10:49
→ HeyScng:template 來減少重複程式碼 以利以後管理 沒想到速度卻 02/09 10:50
→ HeyScng:慢了好幾倍 因此才想上來問此情況是否有解決方法 02/09 10:51
→ deuter:既然只要.net, 為什麼不直接用C#寫就好了呢? 02/09 12:35
→ deuter:覺得c++/cli只有在需要 native和managed間interop時有用 02/09 12:40
→ kazuto:C#也可以直接呼叫C的DLL,這樣反而可以兼顧兩邊優點。 02/09 14:18
推 Ebergies:template 不利閱讀, 反而容易產生管理困難吧 02/09 15:50