読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

FlashとCanvasのどっちが早いか、四角を4000個描いて試してみた

FlashCanvas+JavaScriptのどっちが描画が早いか、四角を16*16*16=4096個描くスクリプトを書いて試してみました。

ちゃんとは計ってないけど、何回かリロードして試した限りでは、

  • FireFoxでは、Flashの方が若干早い
  • IEだと、Flashのほうが圧倒的に早い。

といった感じでした。FireFoxCanvasは思ったよりも高速。でも、やはり、ExplorerCanvasは重いようです。

実験に使ったプログラムのソース

実験に使ったプログラムのソースは以下の通り。

Flash
package {
    
    import flash.display.*;

    public class DrawRects extends Sprite  {

        public function DrawRects(){
            var graphics:Graphics = this.graphics;
            
            for(var r:Number = 0; r < 0xFF; r+=0x10 ) {
                for(var g:Number = 0; g < 0xFF; g+=0x10 ) {
                    for(var b:Number = 0; b < 0xFF; b+=0x10 ) {
                        var color:uint = r << 16 | g << 8 | b;
                        graphics.beginFill( color );
                        graphics.lineStyle( 0, color );
                        graphics.drawRect(r/4+(((b/0x10)%4)*0x40),g/4+(int(b/0x10/4)*0x40),4,4);
                    }
                }
            }
        }
    }
}
Canvas+JavaScript
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript" src="excanvas.js"></script>
  <script type="text/javascript">
    function onLoad() {
        
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
    
        for(var r = 0; r < 0xFF; r+=0x10 ) {
            for(var g = 0; g < 0xFF; g+=0x10 ) {
                for(var b = 0; b < 0xFF; b+=0x10 ) {
                    var color = r << 16 | g << 8 | b;
                    ctx.fillStyle = "rgba(" + r + "," + g + "," + b +",1)"; 
                    ctx.fillRect(r/4+(((b/0x10)%4)*0x40),g/4+(Math.floor(b/0x10/4)*0x40),4,4);
                }
            }
        }
    }
  </script>
  
</head>
<body onload="onLoad();" >

  <canvas id="canvas" width="500" height="500" style="background-color:#FFFFFF;">
  </canvas>
  
</body>
</html>