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