[ Performance - Write ] ByteArray.writeObject vs JSON.encode
♥6 |
Line 45 |
Modified 2010-07-20 02:02:27 |
MIT License
archived:2017-03-08 00:42:48
ActionScript3 source code
/**
* Copyright clockmaker ( http://wonderfl.net/user/clockmaker )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/5InF
*/
<?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>