在以下链接中:
http://www.baptiste-wicht.com/2012/12/cpp-benchmark-vector-list-deque/
如果向下滚动到他正在比较排序的部分,他首先用8字节数据类型显示结果,比较列表,向量和双端队列。对于8字节(和128字节)数据类型,列表比矢量和双端队列慢得多。但是,在排序比较的底部,他使用16字节数据类型,突然列表更快。
对于8和128字节,列表如何更慢,但对于介于两者之间的值(即16字节)更快?
编辑:我在random_insert部分注意到了相同的模式。对于8字节和32字节数据类型,List比vector和deque慢,但是16字节的速度要快得多吗?
答案 0 :(得分:2)
请注意,16字节数据类型不是“普通的16字节数据类型”,它声明:
非平凡数据类型由两个long组成,非常愚蠢 赋值运算符和复制构造函数,只做一些数学运算 (完全没有意义,但代价高昂)。有人可能会说这不常见 复制构造函数既不是公共赋值运算符,也不是 但是,重要的是,这是昂贵的 足以满足这一基准的运营商。
所以这与16个字节无关,它是一个使得列表变慢的幻数,但它关于运算符在非平凡类型上重载会使它变慢。