ページ

2011年5月7日土曜日

配列とvector

という訳で今更ながらに検証したいと思い。
検証したサイトは多数あるだろうけども。
とにかく自分で検証したい・・・。

#define _BUFFER_MAX     ( 0x200000 )

INT                     _array[ _BUFFER_MAX ];
std::vector>INT<        _vector;
INT                     loop;
LARGE_INTEGER           freq, start, end;
DOUBLE                  speed;

_vector.resize( _BUFFER_MAX );

// array
QueryPerformanceFrequency( &freq );
QueryPerformanceCounter( &start );
for( loop=0; loop<_BUFFER_MAX; loop++ )
{
  _array[ loop ]   = loop;
}
QueryPerformanceCounter( &end );
speed = (DOUBLE)( end.QuadPart - start.QuadPart ) / freq.QuadPart;
wprintf( _T( "array speed : %f\n" ), speed );

// std::vector
QueryPerformanceCounter( &start );
for( loop=0; loop<_BUFFER_MAX; loop++ )
{
  _vector[ loop ] = loop;
}
QueryPerformanceCounter( &end );
speed   = (DOUBLE)( end.QuadPart - start.QuadPart ) / freq.QuadPart;
wprintf( _T( "vector speed : %f\n" ), speed );

array speed : 0.019666μs
vector speed : 0.246856μs
細かい数値はあれとして意外と差が出た。

0 件のコメント:

コメントを投稿