我实现的网络库中使用了C++11中的shared_ptr. 昨天做profile,发现很多CPU都消耗在shared_ptr上,所以打算看看shared_ptr的效率如何. 实验是这样的,弄一个临时的shared_ptr,然后不停的拷贝,拷贝100W次,看消耗多长时间.实验对象是gcc ...
个人总结: vector支持随机访问,但无通用性,当采用list后,就不能再使用了,不可取. 迭代器与范围for循环所用时间无明显差异, qt提供的foreach显然是最差的方法, std算法for each也还可以接受, 但范围for循环好看得多, 更好用啊 在循环中调用调用cend方法,会频繁创建一个新的迭代器 不停的构造与析构 ,另外还有函数调用开销,在debug版本结果来看似乎确实有一定 ...
2017-06-29 23:12 0 3809 推荐指数:
我实现的网络库中使用了C++11中的shared_ptr. 昨天做profile,发现很多CPU都消耗在shared_ptr上,所以打算看看shared_ptr的效率如何. 实验是这样的,弄一个临时的shared_ptr,然后不停的拷贝,拷贝100W次,看消耗多长时间.实验对象是gcc ...
先上代码 结果如下: 本次测试工10W条数据 通过控制台输出的结果可以看出, 循环遍历ArrayList集合时,for和foreach的耗时时间差不多,多次测试可以发现,for循环效率比foreach的效率还要高一些; 循环遍历LinkedList集合 ...
array是一个固定大小的顺序容器,不能动态改变大小,array内的元素在内存中以严格的线性顺序存储 与普通数组声明存储空间大小[]的方式是一样有效的,只是加入了一些成员函数和全局函数[get (array)、operators (array)],以便当作标准容器使用 零大小的array ...
c++11新增的容器1:array array最早是在boost中出现:http://www.boost.org/doc/libs/1_61_0/doc/html/array.html 当时的初衷是希望提供一个在栈上分配的,定长数组,而且可以使用stl中的模板算法。 array的用法 ...
c++11中有基于范围的for循环,基于范围的for循环可以不再关心迭代器的概念,只需要关系容器中的元素类型即可,同时也不必显式的给出容器的开头和结尾。 int arr[] = {1, 2, 3, 4}; for(int a : arr ...
范围for循环:1.基于范围的for循环 for(元素类型 元素对象:容器对象) { 循环体 } (1.1)如果循环体由单条语句或者单个结构块组成,可以省略花括号 (1.2)用元素对象依次结合容器对象中的每一个元素,每结合一个元素,执行依次循环体,直至容器内的所有元素都被结合完为止. (1.3 ...
C++11新增了一种循环:基于范围的for循环。这简化了一种常见的循环任务:对数组(或容器类,如vector和array)的每个元素执行相同的操作,如下例所示 for语句允许简单的范围迭代:(只遍历,不修改) 其中,x最初表示数组arrayData的第一个元素。显示第一个元素 ...
C++11包含一种新的 for 循环,称为基于范围的 for 循环,可以简化对数组元素的遍历。格式如下: 例如: 例子会输出:1234 定义用于遍历数组的变量时,可以使用和普通函数参数一样的修饰符。本例的 x 变量相当于传值参数。在循环内部更改 x 不会更改 ...