大O列表复杂度为8个字节对16个字节

时间:2013-11-13 09:04:09

标签: list sorting vector big-o deque

在以下链接中:

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字节的速度要快得多吗?

1 个答案:

答案 0 :(得分:2)

请注意,16字节数据类型不是“普通的16字节数据类型”,它声明:

  

非平凡数据类型由两个long组成,非常愚蠢   赋值运算符和复制构造函数,只做一些数学运算   (完全没有意义,但代价高昂)。有人可能会说这不常见   复制构造函数既不是公共赋值运算符,也不是   但是,重要的是,这是昂贵的   足以满足这一基准的运营商。

所以这与16个字节无关,它是一个使得列表变慢的幻数,但它关于运算符在非平凡类型上重载会使它变慢。