Ticket #22 (closed バグ報告: fixed)

Opened 10 years ago

Last modified 9 years ago

mist/timer.h

Reported by: anonymous Owned by: ddeguchi
Priority: Milestone:
Component: Mist Version:
Keywords: Cc:

Description

以下のコードを実行すると, wasting_timeの1回目の実行が,2回目の実行よりも1割程遅く計測される.

mist::timerのコンストラクタに reset( ); を追加すると,計測したい時間が正確に測れるようです.

実行環境:Visual Studio 2005

#include <mist/mist.h>
#include <mist/io/bmp.h>
#include <mist/timer.h>

void wasting_time( const mist::array2< unsigned char >& image )
{
    size_t k = 0;
    for( size_t y = 0; y < image.height( ); ++y )
    {
        for( size_t x = 0; x < image.width( ); ++x )
        {
            k  += image( x, y );
        }
    }
}

void main( void )
{
    mist::array2< unsigned char > image;
    mist::read_bmp( image, "temp.bmp" );

    std::cout << "1 : ";
    mist::timer tm1;
    for( size_t j = 0; j < 500000000; ++j )
    {
        wasting_time( image );
    }
    std::cout << tm1 << std::endl;

    std::cout << "2 : ";
    mist::timer tm2;
    for( size_t i = 0; i < 500000000; ++i )
    {
        wasting_time( image );
    }
    std::cout << tm2 << std::endl;
}

Change History

comment:1 Changed 10 years ago by ddeguchi

  • Owner changed from somebody to ddeguchi
  • Status changed from new to assigned

バグ報告ありがとうございます。

報告いただいた問題が発生することを確認しました。

MISTでは、Windows環境での経過時間を測定するために、QueryPerformanceCounter? 関数を利用しています。おそらく、この関数の最初の呼び出し時に、なんらかの初期化処理が行われたため、このような問題が発生したのだと思われます。 [1081]では、指摘いただいた点を反映しました。最新のソースで問題が発生するかをチェックしてみてください。

もし、なにか問題がありましたら再度報告をお願いします。

comment:2 Changed 9 years ago by ddeguchi

  • Status changed from assigned to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.