0
你好我有以下代码段在嵌套C++循环优化乘数
for(int k = 0; k< 1000; ++k)
{
double acc = 1.0;
if(...)
{
short amSeq = 100;
for (short c = 0; c <= 21; ++c)
{
for (short kk = (Range.uSequences[k][c]), s = SeqComp[c]; kk != 0; --kk, --s, --amSeq)
{
acc *= static_cast<double>(s)/amSeq;
}
}
}
else
acc = 0;
}
我想知道是否有任何方式来优化去除的static_cast线acc *= static_cast<double>(s)/amSeq;
由200但一个因素会加快东西显然会产生错误的结果由于
什么类型为s?或SeqComp呢?你在说什么平台?但是您可能会发现将其更改为“acc * = static_cast(s)/ amSeq;”将会产生巨大的差异..尤其是如果你也使用float的话...... –
Goz
2012-04-18 19:17:52
如果'SeqComp'是一个'double'数组,你就不需要转换。 – chrisaycock 2012-04-18 19:18:57
@Goz:除非你使用标准库C函数,否则很少float会比double快,因为例如'sinf'比'sin'精度要求更低,而不是因为float更快。 – orlp 2012-04-18 19:19:53