作者clonsey1314 (Clonsey)
看板C_and_CPP
标题[问题] 是否使用vector?
时间Wed Jan 30 21:43:05 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
g++
问题(Question):
最近刚接触vector, 很方便, 省了很多初始化的工作
程式码也变得简洁多, 也较好维护
但是同时也降低的程式的效能(很明显)
请问若没有要做太多复杂的增删,是否继续使用array或pointer就好?
程式码里同时有vector和pointer/array混杂这样的coding style会不会不好?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.142.64.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1548855788.A.21F.html
※ 编辑: clonsey1314 (220.142.64.53), 01/30/2019 21:44:36
1F:→ james732: 我觉得应该要找出你效能降低的原因 01/30 21:51
2F:→ james732: 譬如是不是用传值导致太多不必要的复制? 01/30 21:52
对, 程式的确有几个function是有传vector, 且这些function不断地被呼叫
那是不是应该尽量避免将vector型态的变数作为function的参数?
※ 编辑: clonsey1314 (220.142.64.53), 01/30/2019 22:05:44
※ 编辑: clonsey1314 (220.142.64.53), 01/30/2019 22:09:35
3F:→ james732: 应该要用传reference或传pointer而不是传value 01/30 23:20
4F:→ Feis: 1. 用参考. 2. 看能不能改用 array<T> 01/30 23:24
5F:推 steve1012: 通常vector不会是效能瓶颈 你确认过了吗 01/31 01:00
6F:推 s06i06: Vector 效能不会比array差 01/31 01:46
7F:→ s9041200: 传参考,不然拉成全域,自己维护状态 01/31 11:23
谢谢各位,已改传reference,效能也已获得改善:)
※ 编辑: clonsey1314 (218.164.36.184), 01/31/2019 11:50:31
8F:推 chchwy: -O2之後vector跟原生array应该要几乎一样快才对 02/01 06:27
9F:推 LPH66: 主要是复制成本, vector 被 PBV 的话会需要复制 02/01 10:16
10F:→ LPH66: 所以大家才会建议传参考 (PBR) 减少复制成本 02/01 10:17
11F:→ F04E: 降低效能应该是你的问题,source code放出来看看 02/05 19:37
12F:→ F04E: std::move和emplace_back是你的好朋友 02/05 19:39