问一个简单的问题

「已注销」 2010-06-25 11:01:28
以下两个函数中那个效率要高:
A:

void test()
{
for(int i=0; i<1000; i++)
{
CString strTest;
....
}
}

B:

void test()
{
CString strTest;
for(int i=0; i<1000; i++)
{
...// 与A相同
}
}


如果strTest是C++内部数据类型呢(如: int )?
...全文
191 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
dodge_ 2010-06-26
  • 打赏
  • 举报
回复
关注~~~~~~~
yzx714 2010-06-26
  • 打赏
  • 举报
回复
只要是好的编译器,我相信A,B会一样的,但如果编译器优化不怎么样,则B好得多
liutengfeigo 2010-06-26
  • 打赏
  • 举报
回复
第二个。。?
不清楚,不敢去研究这家伙
MK 2010-06-26
  • 打赏
  • 举报
回复
第二个。你把定义的放在循环里面,会重复创建N次。。。
jbz001 2010-06-26
  • 打赏
  • 举报
回复
第二个效率高,第一个每次循环的时候都要重新申请变量,并且每次要释放变量。
第二个只需要一次就可以了。
tjyjx7946358 2010-06-26
  • 打赏
  • 举报
回复
饿。学习了。
delphiwcdj 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cattycat 的回复:]

第二个效率好点,避免频繁构造和析构对象,编译器有可能会给你优化了。内部类型差不多。
[/Quote]
UP
cs_yagami 2010-06-26
  • 打赏
  • 举报
回复
i++和++i是差在轉為汇編時多個指令,所以如果數量一多,就會有些許效率的差異...
macrojj 2010-06-26
  • 打赏
  • 举报
回复
哦 学习了 。
xiaoyuand2010 2010-06-26
  • 打赏
  • 举报
回复
第一种 strTest是for的局部变量,而第二个则为test的变量,相比较而言第二个效率较高,但第一个更常用。
cattycat 2010-06-26
  • 打赏
  • 举报
回复
i++和++i不影响,都是内部类型。有的stl的迭代器的话还是用前缀++比较好,因为前缀++通常返回引用。不用创建临时对象。
「已注销」 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wyz007134 的回复:]

C/C++ code

for(int i=0; i<1000; i++)
{
CString strTest;
....
}


//这里strTest是for的局部变量,所以每次for开始执行都会创建一个临时对象,每次for结束又会
//销毁这个临时变量
//另外,把for语句中的i++改为++i也会略微的提高效率
[/Quote]
i++改为++i也会略微的提高效率?? 什么意思啊 ?   能说一下吗?
shangyangi 2010-06-26
  • 打赏
  • 举报
回复
第二个效率高些!
wyz007134 2010-06-26
  • 打赏
  • 举报
回复
 
for(int i=0; i<1000; i++)
{
CString strTest;
....
}

//这里strTest是for的局部变量,所以每次for开始执行都会创建一个临时对象,每次for结束又会
//销毁这个临时变量
//另外,把for语句中的i++改为++i也会略微的提高效率
向立天 2010-06-26
  • 打赏
  • 举报
回复
一般的编译器都会进行优化的
如果不考虑优化那肯定是第二种效率高
「已注销」 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lthyxy 的回复:]

第二个。。?
不清楚,不敢去研究这家伙
[/Quote]

为什么啊?>
dukong123 2010-06-26
  • 打赏
  • 举报
回复
第二个效率高
偶是江湖中人 2010-06-26
  • 打赏
  • 举报
回复
第二个效率高
第一个每循环一次都要创建一个局部变量
BuleRiver 2010-06-26
  • 打赏
  • 举报
回复
B
回复内容太短了!
lyzhlpqf 2010-06-26
  • 打赏
  • 举报
回复
第二个。
加载更多回复(9)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧