从几个结构访问字段到访问数组/向量的元素是否较慢?

cpd*_*pd1 1 c++ arrays structure

我注意到其他学生喜欢使用大量数组来表示某些对象的字段.

这是因为从数组访问元素与从结构中访问字段的速度更快吗?

例如,假设我为某些对象存储了时钟周期...

1) An array of 5 ints 
2) As a field in 5 structures
Run Code Online (Sandbox Code Playgroud)

然后我需要访问这些元素以找到min/max.

我喜欢将某些对象的属性保持在一起的想法,而不是将多个数组用于自然适合的字段.我只是不确定我是否正在编写一个被认为是错误的编程习惯,将其作为一个结构中的字段来处理.

ana*_*lyg 5

也许不是5个元素 - 但有数千个元素,可能会有所不同.

缓存的通用原则是参考的位置 - 将内容存储在一起更好.如果您知道您的程序只能访问结构的一个(或几个)字段,那么最好将该字段重新定位到专用数组中.如果程序访问结构的所有(或大多数)字段,最好将结构本身保存在数组中.

然而,就像与性能相关的所有事情一样,真实的行为经常令人惊讶,您通常必须衡量一种实施方式,然后另一种方式,并选择最佳方式.


如果您的应用程序不需要性能优化,只需使用最易读的代码.它可以将您的"时钟周期"分配为一个struct或一个数组中的字段- 哪种方式更具可读性取决于您的应用程序.有时甚至是您正在开发的应用程序的哪个方面.