找回密码
 注册
查看: 630|回复: 4

问两个c++中的效率问题

[复制链接]
发表于 2005-4-6 17:44:43 | 显示全部楼层 |阅读模式
1.
vector<int> v(10000,0);
for(int i=0; i< v.size(); i++)
;



vector<int> v(10000,0);
int size = v.size();
for(int i=0; i< size; i++)
;

相比效率会否差的比较多?一般编译器(比如gcc)会否对这种语句进行优化?
我不知道标准库vector<class T>::size()有几条语句,还有象list,map等的size()函数。

2.
vector<int> v(10000,0);
for(int i=0; i< 10000; i++)
        vector<int> tmp = v;



vector<int> v(10000,0);
vector<int> tmp;
for(int i=0; i< 10000; i++)
        tmp = v;
       
相比效率怎么样?前者每次定义一次vector<int> tmp会否浪费一些内存?
发表于 2005-4-6 19:27:33 | 显示全部楼层
第一题应该是可以优化的, 不过我从来都用第2种写法。
第2题的第一种方法是每次赋值,都会重新进行构造,然后执行赋值,第2种方法只进行赋值操作,没有构造开销。不过编译器应该进行一些优化。

可以让gcc生成汇编代码看看
回复

使用道具 举报

发表于 2005-4-6 22:11:11 | 显示全部楼层
應該看汇编代码才會知道是否一樣
回复

使用道具 举报

发表于 2005-4-6 22:37:21 | 显示全部楼层
这觉得这和STL 实现是分不开的。
回复

使用道具 举报

 楼主| 发表于 2005-4-6 23:04:16 | 显示全部楼层
不知道编译时加 O2 之类的优化会变成怎样

汇编语言不会看,看起来很累的吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-8 23:51 , Processed in 0.062208 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表