[ Performance - Write ] ByteArray.writeObject vs JSON.encode clockmaker forked:0favorite:6lines:45license : MIT License modified : 2010-07-20 02:02:27 Embed Tweet <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" addedToStage="setup()"> <mx:Script> <![CDATA[ import com.adobe.serialization.json.JSON; import mx.utils.Base64Encoder; import jp.nium.utils.ClassUtil; private static const MAX:Number = 5000; private var array:Array = []; protected function calc():void { var log:Array = [], old:int; // -- log.push("各テスト " + MAX + " 個の Point インスタンスを格納した配列を\n保存可能なデータに変換した場合の計算結果 [単位 : ミリ秒]"); log.push("(誤差は多少生じます)"); log.push(""); // -- old = getTimer(); registerClassAlias(ClassUtil.getClassPath(Point), Point); var ba2:ByteArray = new ByteArray(); ba2.writeObject(array); log.push("ByteArray.writeObject() -> " + (getTimer() - old) + " ms (output is ByteArray)"); // -- old = getTimer(); registerClassAlias(ClassUtil.getClassPath(Point), Point); var ba:ByteArray = new ByteArray(); ba.writeObject(array); var enc:Base64Encoder = new Base64Encoder(); enc.encodeBytes(ba); var str:String = enc.toString(); log.push("ByteArray.writeObject() + Base64 Encode -> " + (getTimer() - old) + " ms (output is String)"); // -- old = getTimer(); JSON.encode(array); log.push("JSON.encode() -> " + (getTimer() - old) + " ms (output is String)"); // -- log.push(""); log.push("結果については言及しませんので, 各自ご判断ください."); ta.text = log.join("\n"); } protected function setup():void { for (var i:int = 0; i < MAX; i++) { array[ i ] = new Point(MAX * Math.random(), MAX * Math.random()); } calc(); } ]]> </mx:Script> <mx:Button label="Re Calculation" click="calc()"/> <mx:TextArea id="ta" editable="false" width="100%" height="100%"/> </mx:Application> Code Fullscreen Preview Fullscreen motikawa_rgm.. alumican_net.. uwi coppieee ProjectNya Thy 最適化 高速化 encode String