0

こんにちは私は次のスニペットを持っています

  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;

    }

acc *= static_cast<double>(s) / amSeq;static_castを削除して行を最適化する方法があるかどうか疑問に思っていましたが、速度は200倍になりますが、明らかに誤った結果が得られます。ありがとう

4

1 に答える 1

2

コードを移動し、適切なタイプを使用することで、変換を簡単に回避できます。

if(...)
{
    double amSeq = 100;

    for (short c = 0; c <= 21; ++c)
    {
        double s = SeqComp[c];

        for (short kk = (Range.uSequences[k][c]); kk != 0; --kk, --s, --amSeq)
        {
                acc *= s / amSeq;
        }
    }
}
于 2012-04-18T19:28:24.963 に答える