array
与std::queue
相比,哪个时间更好?为什么?
我编写了一个图形处理算法,其中边界顶点存储在std::queue
中,并使用push_back()
和pop_front()
进行访问。当我使用指向前沿顶点的起点和终点的前端指针和末尾指针重新实现前沿时,我在时间方面得到了更好的结果。对于足够大的数据,数组是否真的比队列快?
答案 0 :(得分:1)
对于大多数机器来说,阵列更快,因为阵列的连续元素可以加载到同一个缓存行中(或者在预先需要的基础上预先加载到缓存中)。由于L1高速缓存读取比主存储器访问快200倍,因此任何需要指针获取的东西都可能不在高速缓存中并且需要更长的主存储器读取周期。