none
list <..> 效率问题 RRS feed

  • 問題

  •  在程序裏大量使用 list <..> 的語法會佔用系統資源嘛
    有没有比较好的解决方案?
    2009年2月11日 上午 04:21

解答

所有回覆

  • 占用系統資源這個問題有點攏統.
    指得是CPU,記憶體還是...?

    如果針對效能
    泛型遠比非固定型別的ArrayList這類通用型集合來得有效率,尤其是當集合內物件為數值型態時可以避免Boxing與UnBoxing動作.

    而對於應用程式本身編譯後的大小而言.
    如果對C++泛型底層編譯機制有了解,應該會知道C++的泛型底層是用巨集取代方式,所以使用端有多少型別最後編譯器會產生每個型別的對應程式碼,當型別過多時編譯出來的檔案相對會變大,這是C++泛型的一個缺點.
    但泛型在dotnet與C++底層運作不同.dotNet因為有JIT,所以可以避免C++的編譯問題,之前MSDN Magazine有篇文章在詳述這個問題,但我找不到了.

    整體而言對於效能泛型優於通用型別.
    但泛型也有缺點,在一些進階應用需自行設計泛型類別時,泛型會大大增加開發的門檻,需要比較艱深的一些技術.(對泛型設計有興趣的可以參考侯俊傑翻譯的STL泛型設計那本書,目前中文關於泛型有深入介紹的可能只有這本,雖然內容是C++但其中對於泛型的一些設計技巧是一樣的)
    不過如果只是拿現有的東西來用那就沒差了.
    2009年2月11日 上午 06:13
  • 謝謝您!我指的是cpu的佔用狀況!
    • 已標示為解答 ㄚ笠市 2009年2月11日 上午 07:01
    2009年2月11日 上午 07:01
  • 完全不会造成影响  <>里面的设置  在编译器就已经处理好了  
    list<String>    和 list<int>   在编译后会形成完全不同的两个对象代码  所以运行的时候不会调用反射  效率完全没有损失
    Guitar Hero IV -- Singing Rock & Roll.
    2009年2月13日 上午 06:57