非常简单的问题[英] very simple question

问题描述

大家好,

我只是想知道在性能上是否有任何差异
在函数开头或 for
中声明变量循环.例如:

双重测试()
{
双a,b,c;
for(int i=0; ia = i*10;
b = a-i;
c += a*b;
}
返回 c;
}

或:

双重测试()
{
双c;

for(int i=0; i双a = i*10;
双b = a-i;
c += a*b;
}
返回 c;
}

推荐答案

aaragon 写道:
我只是想知道在性能上是否有任何差异
在函数开头或 for
中声明变量循环.[..]
在实际为这两个功能计时之前没有办法知道.


--
邮件回复时请去掉大写的"A"
我不回复置顶的回复,请不要问

aaragon 写道:
双重测试()
{
双c;

for(int i=0; i双a = i*10;
双b = a-i;
c += a*b;
}
返回 c;
}
谷歌"过早优化".总是写最容易的版本
程序员理解.您的第二个版本明确了 a 和 b 的角色.

而且,在可变放置级别上,您几乎无能为力
比编译器做得更好.编译器可能会优化一个
和b差不多了,而且只会使用一个FPU寄存器,不管你在哪里
声明它们.

--
菲利普
http://flea.sourceforge.net/PiglegToo_1.html

"aaragon"<al**************@gmail.com 在消息中写道
新闻:11**********************@l77g2000hsb.googlegr oups.com...
大家好,

我只是想知道在性能上是否有任何差异
在函数开头或 for
中声明变量循环.例如:

双重测试()
{
双a,b,c;
for(int i=0; ia = i*10;
b = a-i;
c += a*b;
}
返回 c;
}

或:

双重测试()
{
双c;

for(int i=0; i双a = i*10;
双b = a-i;
c += a*b;
}
返回 c;
}
考虑是否 n == 0.如果 n==0 对于您的第二个示例,变量将
永远不必分配.

如果它们总是被分配(n 0)那么区别就是分配
..对初始化.对于简单类型(double、float 等),它可能
没有太大区别.但是对于类来说,如果有
就可以了需要时间的构造函数.

C++ 中的一般规则是在您使用它们之前使用 delcare 变量.一个
主要原因是让您知道声明的变量是什么.如果一个
功能大而你遇到
a = 10;
什么是?是整数吗?双倍的?字符?一类?你必须向上滚动到
函数的顶部找出来.然而
双a = 10;
更容易阅读/维护代码 IMO.

本文地址:https://www.itbaoku.cn/post/1050379.html

相关标签/搜索