C ++ STL容器的性能。更好的结构速度或没有结构?

时间:2017-06-05 12:10:16

标签: c++ performance struct stl containers

我有一些数据容器,并考虑将它们放入结构中(更容易将其提供给函数等)。 该计划应尽可能快。对结构中容器的访问是否更慢或完全相同?

// data without struct
double d1;
bool b1;
std::map<std::string, std::deque<double>> map1;
std::vector<std::deque<int>> a1;
std::vector<std::deque<int>> a2;
std::vector<std::vector<<std::deque<int>>> a3;
std::vector<std::vector<<std::deque<int>>> a4;
// ... and perhaps even more

VS

struct containerstruct
{
   double d1;
   bool b1;
   std::map<std::string, std::deque<double>> map1;
   std::vector<std::deque<int>> a1;
   std::vector<std::deque<int>> a2;
   std::vector<std::vector<<std::deque<int>>> a3;
   std::vector<std::vector<<std::deque<int>>> a4;
   // ... and perhaps even more
};
containerstruct data;

1 个答案:

答案 0 :(得分:2)

这只是另一个“如果我使用全局变量,我的程序会运行得更快吗?”的问题。幸运的是,与大约20多年前的情况不同,答案现在是响亮的 没有

使用现代优化编译器,生成的代码几乎完全相同。在最差,您将有一个指针取消引用来访问字段,这不会在性能上产生可检测的差异。

因此,您应该编写可读且可维护的代码,这意味着将相关内容封装在一起。顺便说一下,这是面向对象设计的整个前提。