LoginSignup
0
0

More than 5 years have passed since last update.

petalinux / microzed > O. 計算処理の計時

Last updated at Posted at 2016-01-10

自分の過去メモ(2014年ころ)より

  • MicroZed (CPU: 666MHz動作)

下のコードにすること (return fvalを追加)で、過度のoptimizationを回避できるようになり、O0 optionでもO2 optionでも同じ結果となった。

計時にはclock_gettime()を用いた。clock_gettime()のtime granularityは2700ns程度のようだ。10000回のループにすることで、granularityの影響を回避した。

float型 > 足し算10000回

static float funcToBeTimed_floatAdd(void)
{
    int idx;
    float fval = 0.0f;
    for(idx=0; idx<kLoopNum; idx++) {
        fval = fval + 1.001f;
    }
    return fval;
}

on MicroZed: 17.1(usec) >> 1回の演算は17.1(nsec)

float型 > 掛け算10000回

static float funcToBeTimed_floatMulti(void)
{
    int idx;
    float fval = 3.14f;
    for(idx=0; idx<kLoopNum; idx++) {
        fval = fval * 1.001f;
    }
    return fval;
}

on MicroZed: 18.2(usec) >> 1回の演算は18.2(nsec)

float型 > 割り算10000回

static float funcToBeTimed_floatDiv(void)
{
    int idx;
    float fval = 3141590000000.00f;
    for(idx=0; idx<kLoopNum; idx++) {
        fval = fval / 1.001f;
    }
    return fval;
}

on MicroZed: 33.2(usec) >> 1回の演算は33.2(nsec)

(追記 2016年1月)

計時のやり方についてStackoverflowでアドバイスをいただいたがリンク情報を失念した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0