最新の更新情報

2012年2月
« 1月    
 1234
567891011
12131415161718
19202122232425
26272829  

本ブログのURL

qrcode.png

雨雲の動き

お天気

 
 
吟遊詩人の戯言 内専用の記事検索...
 
 

memcpy()の速度を計測してみた


キーワード(クリックで関連記事が読めます) → ,

関連記事



 
 

2006年10月06日 20時05分 旧ブログより
memcpy()の性能テスト VC++版

C#版はこちら
インテルコンパイラによるC++版はこちら


今、仕事で、画像処理なんぞをやっており
1メガを超える画像データを、あっちにコピー、こっちにコピーしたり

そのとき、登場するのが、memcpy()命令@C++言語

この実行速度が気になったので、ちょいと計測してみた

CPU : AMD Athlon64x2 3800+(2.0GHz)
Memory : 1GB
OS : Windows XP Pro
C++ : Visual Studio 2005(VC++ 8.0)

テストに使ったソースは、一番最後に。。。
画像データ2000回の
memcpy()を実行
デバッグコンパイル リリースコンパイル
DVサイズ
720 * 480
32ビットピクセル
(1.3MB)
2,766ミリ秒
(999,566 B/ms)
2,719ミリ秒
(1,016,844 B/ms)
ハイビジョンサイズ
1280 * 960
32ビットピクセル
(4.8MB)
10,016ミリ秒
(981,469 B/ms)
9,781ミリ秒
(1,005,050 B/ms)
DVサイズなら、一枚転送するのに 1.3ミリ秒らしい
目いっぱい速くなってるねぇ。。。

って、ハイビジョンサイズだと、さすがに重いか

memcpy()の転送速度情報が、欲しい方へ、参考情報、ってことで。。。


C++:
  1. //#define DUMMY_WIDTH  720
  2. //#define DUMMY_HEIGHT 480
  3. #define DUMMY_WIDTH  1280
  4. #define DUMMY_HEIGHT 960     
  5.  
  6. #define DUMMY_DEPTH  4
  7. #define DUMMY_BUFLEN    
  8.        (DUMMY_WIDTH * DUMMY_HEIGHT * DUMMY_DEPTH)   
  9.  
  10. void CtestDlg::OnBnClickedButton1()
  11. {     
  12.  
  13.     // TODO: ここにコントロール通知ハンドラ コードを追加します。     
  14.  
  15.     CStatic *lbl;
  16.     char   stBuf[64];
  17.     CString st;     
  18.  
  19.     BYTE *buf1 = new BYTE [ DUMMY_BUFLEN];
  20.     BYTE *buf2 = new BYTE [ DUMMY_BUFLEN];     
  21.  
  22.     SYSTEMTIME stm;
  23.     GetSystemTime(&stm);
  24.     sprintf(stBuf,"%d_%d_%d_%d",  
  25.             stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds);     
  26.  
  27.     st = stBuf;
  28.     lbl = (CStatic*)GetDlgItem(IDC_STATIC_LABEL1);
  29.     lbl->SetWindowTextW(st);     
  30.  
  31.     for(int i = 0; i <2000; i++)
  32.     {
  33.         memcpy(buf1, buf2, DUMMY_BUFLEN);
  34.     }     
  35.  
  36.     GetSystemTime(&stm);
  37.     sprintf(stBuf,"%d_%d_%d_%d"
  38.             stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds);     
  39.  
  40.     st = stBuf;
  41.     lbl = (CStatic*)GetDlgItem(IDC_STATIC_LABEL2);
  42.     lbl->SetWindowTextW(st);     
  43.  
  44.     delete buf1;
  45.     delete buf2;
  46. }




 
 
 
 

コメントを残す

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">