いくつかのフィルタリング操作を行うメソッドがあります。このメソッドはループで 10000 回呼び出されます。このメソッドの平均実行時間は、約 3000 ~ 5000 ナノ秒です ( で測定System.nanoTime()
)。しかし、時には (10000 のうち 5 ~ 10 サンプル)、120000 ナノ秒に達することもあります。同じサンプルで 2 回発生することはないため、データ障害ではありません。これらのランダムな速度低下の原因は何でしょうか? 関連性はないと思いますが、以下のコード:
private static int lowPassFilter(int data)
{
long startTime = System.nanoTime();
int y0 = 0;
lcount++;
lx[ln] = lx[ln + 13] = data;
y0 = (ly1 << 1) - ly2 + lx[ln] - (lx[ln + 6] << 1) + lx[ln + 12];
ly2 = ly1;
ly1 = y0;
y0 >>= 5;
if(--ln < 0)
ln = 12;
long endTime = System.nanoTime();
long diff=endTime - startTime;
return(y0);
}