[問題] 是否使用vector?

作者: clonsey1314 (Clonsey)   2019-01-30 21:43:05
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++
問題(Question):
最近剛接觸vector, 很方便, 省了很多初始化的工作
程式碼也變得簡潔多, 也較好維護
但是同時也降低的程式的效能(很明顯)
請問若沒有要做太多複雜的增刪,是否繼續使用array或pointer就好?
程式碼裡同時有vector和pointer/array混雜這樣的coding style會不會不好?
謝謝
作者: james732 (好人超)   2019-01-30 21:51:00
我覺得應該要找出你效能降低的原因譬如是不是用傳值導致太多不必要的複製?應該要用傳reference或傳pointer而不是傳value
作者: Feis (永遠睡不著 @@)   2019-01-30 23:24:00
1. 用參考. 2. 看能不能改用 array<T>
作者: steve1012 (steve)   2019-01-31 01:00:00
通常vector不會是效能瓶頸 你確認過了嗎
作者: s06i06 (三條魚)   2019-01-31 01:46:00
Vector 效能不會比array差
作者: s9041200 (小明阿)   2019-01-31 11:23:00
傳參考,不然拉成全域,自己維護狀態
作者: chchwy (mat)   2019-02-01 06:27:00
-O2之後vector跟原生array應該要幾乎一樣快才對
作者: LPH66 (-6.2598534e+18f)   2019-02-01 10:16:00
主要是複製成本, vector 被 PBV 的話會需要複製所以大家才會建議傳參考 (PBR) 減少複製成本
作者: F04E (Fujitsu)   2019-02-05 19:37:00
降低效能應該是你的問題,source code放出來看看std::move和emplace_back是你的好朋友

Links booklink

Contact Us: admin [ a t ] ucptt.com