vector.length=0で使いまわすのとnewして使いまわすの
環境によって速度に差が出そう。気持ちの問題で使い分ける?
♥0 |
Line 135 |
Modified 2015-01-30 14:28:28 |
MIT License
archived:2017-03-20 08:06:44
ActionScript3 source code
/**
* Copyright yasurageruheya ( http://wonderfl.net/user/yasurageruheya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/axIL
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
public class FlashTest extends Sprite {
public const LOOP:int = 100;
public const txt:TextField = new TextField();
public var vec:Vector.<TestObject> = new Vector.<TestObject>();
public var tests:Vector.<Tester> = new Vector.<Tester>();
public function FlashTest() {
tests[tests.length] = new Tester("10個 length = 0: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec.length = 0;
j = 10;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests[tests.length] = new Tester("10個 new: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec = new Vector.<TestObject>();
j = 10;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests[tests.length] = new Tester("100個 length = 0: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec.length = 0;
j = 100;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests[tests.length] = new Tester("100個 new: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec = new Vector.<TestObject>();
j = 100;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests[tests.length] = new Tester("1000個 length = 0: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec.length = 0;
j = 1000;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests[tests.length] = new Tester("1000個 new: ", function():void
{
var i:int = LOOP;
var j:int;
while (i--)
{
vec = new Vector.<TestObject>();
j = 1000;
while (j--)
{
vec[vec.length] = new TestObject();
}
}
});
tests.reverse();
txt.width = 500;
addChild(txt);
// write as3 code here..
addEventListener(Event.ENTER_FRAME, test);
}
private function test(e:Event):void
{
var str:String = "";
var i:int = tests.length;
while (i--)
{
str += tests[i].start();
}
txt.text = str;
}
}
}
class TestObject
{
public function TestObject(){}
}
import flash.utils.getTimer;
class Tester
{
public var time:Number = 0;
public var name:String;
public var test:Function;
public var count:int = 1;
public function start():String
{
const startTime:int = getTimer();
test();
time += getTimer() - startTime;
return name + (time / (count++)) + " ms.\n";
}
public function Tester(name:String, test:Function)
{
this.name = name;
this.test = test;
}
}