最新の更新情報

2012年11月
« 10月    
 123
45678910
11121314151617
18192021222324
252627282930  

本ブログのURL

qrcode.png

お天気

 
このブログ「吟遊詩人の戯言」 の記事検索...

C#でもmemcpy()してみた


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

関連記事

2006年10月17日 20時58分 旧ブログより
memcpy()のC#版での性能テスト


いや、実際は、memcpy()じゃなくて、Array.Copy()命令なんだが(w
前回のC++版をC#に書き直してみました

条件は以下のとおり

CPU : AMD Athlon64x2 3800+(2.0GHz)
Memory : 1GB
OS : Windows XP Pro
C++ : Visual Studio 2005(C#2.0) + .Net FrameWork2.0
画像データ2000回の
Array.Copy()を実行
リリースコンパイル
DVサイズ
720 * 480
32ビットピクセル
(1.3MB)
2,891ミリ秒
(956,347 B/ms)
ハイビジョンサイズ
1280 * 960
32ビットピクセル
(4.8MB)
10,172ミリ秒
(966,417 B/ms)
速度、そんなには遅くないですなぁ。
ほんのちょっぴりC++版より遅い感じ

開発コストは、比べ物にならないくらいC#のほうが、低いし
C#でも、安心して画像処理できる、はず?(w

C#:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms
  8.  
  9. namespace memcpy
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.         private const int DUMMY_WIDTH = 1280;
  14.         private const int DUMMY_HEIGHT = 960;
  15.         private const int DUMMY_DEPTH = 4;
  16.         private const int DUMMY_BUFLEN = DUMMY_WIDTH * 
  17.                                          DUMMY_HEIGHT * DUMMY_DEPTH;
  18.         byte[]      buf1;
  19.         byte[]      buf2; 
  20.  
  21.         public Form1()
  22.         {
  23.             InitializeComponent();
  24.         } 
  25.  
  26.         private void button1_Click(object sender, EventArgs e)
  27.         {
  28.             buf1 = new byte[DUMMY_BUFLEN];
  29.             buf2 = new byte[DUMMY_BUFLEN]
  30.  
  31.             try
  32.             {
  33.                 DateTime dt = DateTime.Now
  34.  
  35.                 int min  = dt.Minute;
  36.                 int sec  = dt.Second;
  37.                 int mili = dt.Millisecond
  38.  
  39.                 label1.Text = min.ToString() + "_" +   sec.ToString() + "_" + mili.ToString()
  40.  
  41.                 for(int i = 0; i <2000; i++)
  42.                 {
  43.                     Array.Copy(buf1, buf2, DUMMY_BUFLEN);
  44.                 } 
  45.  
  46.                 dt = DateTime.Now
  47.  
  48.                 min  = dt.Minute;
  49.                 sec  = dt.Second;
  50.                 mili = dt.Millisecond
  51.  
  52.                 label2.Text = min.ToString() + "_" +  sec.ToString() + "_" + mili.ToString();
  53.             }
  54.             catch
  55.             {
  56.             }
  57.             finally
  58.             {
  59.                 buf1 = null;
  60.                 buf2 = null;
  61.             }
  62.         }
  63.     }
  64. }

 
 
 
 

Leave a Reply

  

  

  

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="">