[英]Dynamic arrays vs. std::vector
我已經編寫了一個小程序,可以使用朴素除法算法計算素數。 為了提高性能,我認為它應該僅根據先前檢測到的小於等於數平方根的素數來檢查可除性。 為此,我需要跟蹤素數。 我已經使用動態數組實現了它。 (例如,使用new
和delete
)。 我應該改用std::vector
嗎? 在性能方面哪個更好? (維護不是問題。)任何幫助將不勝感激。 😊
理想答案:
我們每個人應該怎么知道? 這取決於您的編譯器,您的OS,您的體系結構,您的標准庫實現,行星的對齊方式...
進行基准測試。 可能與此有關 。 (還沒有使用過,但是使用起來似乎很簡單。)
實際答案:
使用std::vector
。 您所做的每個new
和delete
操作都有可能導致內存泄漏,兩次delete
或忘記做某事。 std::vector
基本上還是在后台執行此操作。 通過最大化優化標志,您更有可能獲得可觀的性能提升(如果使用gcc
,請嘗試-Ofast
和-march=native
)。
也:
維護不是問題。
懷疑。 相信我這一點。 如果沒有其他問題,請至少注釋您的代碼(但這是另一種蠕蟲病毒)。
為了您的目的,向量可能會更好,這樣您就不必擔心內存管理(例如,增加數組大小並復制以前的結果),或保留太多內存來存儲結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.