forked from: String の += と、Array.join で結合するのではどっちが速いか
♥0 |
Line 66 |
Modified 2010-05-10 14:54:10 |
MIT License
archived:2017-03-20 06:44:29
ActionScript3 source code
/**
* Copyright uwi ( http://wonderfl.net/user/uwi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/k5y0
*/
// forked from sugamasao's String の += と、Array.join で結合するのではどっちが速いか
package {
import com.actionscriptbible.Example;
import flash.utils.getTimer;
public class FlashTest extends Example {
private var N : uint = 500000;
// なぜわざわざ + t.toString()するかわからんので外した。
// あとemptyとVectorも追加
// pushより最初から領域を確保しておいたほうがはやい
public function FlashTest() {
// write as3 code here..
trace("test start...");
joinTest("unko");
joinVecTest("unko");
plusTest("unko");
empty("unko");
ずる("unko");
trace("test end.");
}
private function empty(str:String):String {
var t:int = getTimer();
for(var i:uint = 0; i < N; i++){
str;
}
trace("empty=>", getTimer() - t, "ミリ秒");
return "";
}
private function joinTest(str:String):String {
var t:int = getTimer();
var result:String = "";
var array:Array = new Array(N);
for(var i:uint = 0; i < N; i++){
array[i] = str;
}
result = array.join("");
trace("join=>", getTimer() - t, "ミリ秒")
return result;
}
private function joinVecTest(str:String):String {
var t:int = getTimer();
var result:String = "";
var array:Vector.<String> = new Vector.<String>(N);
for(var i:uint = 0; i < N; i++){
array[i] = str;
}
result = array.join("");
trace("joinvec=>", getTimer() - t, "ミリ秒")
return result;
}
private function plusTest(str:String):String{
var t:int = getTimer();
var result:String = "";
for(var i:uint = 0; i < N; i++){
result += str;
}
trace("plus=>", getTimer() - t, "ミリ秒")
return result;
}
private function ずる(str:String):String{
var t:int = getTimer();
var result:String = "";
var cur : String = str;
for(var j : int = N;j > 0;j >>>= 1){
if(j & 1)result += cur;
cur += cur;
}
trace("ずる=>", getTimer() - t, "ミリ秒")
return result;
}
}
}