Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import flash.utils.getTimer;
- /**
- * ...
- * @author 2bam
- */
- public class PerfTestCallAccess {
- static public var out:String = "";
- static public function run(Count:uint = 1000000):void {
- var dummies:Vector.<Dummy> = new Vector.<Dummy>;
- var start:uint;
- var end:uint;
- var dummy:Dummy;
- //const Count:int = 1000000;
- var i:int;
- for(i=Count; i>=0; i--) {
- dummies.push(new Dummy);
- }
- var dt:Number = 0.1;
- var pvx:Number = 0;
- var pvy:Number = 0;
- start = getTimer();
- for(i=Count; i>=0; i--) {
- dummy = dummies[i];
- dummy.update(dt, pvx, pvy);
- }
- end = getTimer();
- myTrace("CALL ", (end-start)/1000.0,Count);
- start = getTimer();
- for(i=Count; i>=0; i--) {
- dummy = dummies[i];
- //////////////////////////////////////////
- dummy.dx = dt*(dummy.vx+pvx);
- dummy.dy = dt*(dummy.vy+pvy);
- dummy.x += dummy.dx;
- dummy.y += dummy.dy;
- if(dummy.damp!=0) {
- dummy.ax -= dummy.damp*dummy.ax*dt; //TESTING
- dummy.ay -= dummy.damp*dummy.ay*dt;
- }
- if(dummy.ax==0 && dummy.ay==0) {
- if(dummy.damp!=0) {
- dummy.vx -= dummy.damp*dummy.vx*dt;
- dummy.vy -= dummy.damp*dummy.vy*dt;
- }
- else if(dummy.dragX!=0 || dummy.dragY !=0) {
- if(dummy.vx>0) {
- dummy.vx -= dt*dummy.dragX;
- if(dummy.vx<0) dummy.vx = 0;
- }
- else if(dummy.vx<0) {
- dummy.vx += dt*dummy.dragX;
- if(dummy.vx>0) dummy.vx = 0;
- }
- if(dummy.vy>0) {
- dummy.vy -= dt*dummy.dragY;
- if(dummy.vy<0) dummy.vy = 0;
- }
- else if(dummy.vx<0) {
- dummy.vy += dt*dummy.dragY;
- if(dummy.vy>0) dummy.vy = 0;
- }
- }
- }
- else {
- dummy.vx += dt*dummy.ax;
- dummy.vy += dt*dummy.ay;
- }
- dummy.t+=dt;
- if(dummy.ttl > 0 && dummy.t>=dummy.ttl) {
- dummy.t = dummy.ttl;
- dummy.dead = true;
- }
- //////////////////////////////////////////
- }
- end = getTimer();
- myTrace("ACCESS ", (end-start)/1000.0,Count);
- start = getTimer();
- for(i=Count; i>=0; i--) {
- dummy = dummies[i];
- dummy.update4(dt, pvx, pvy);
- }
- end = getTimer();
- myTrace("CALL4 ", (end-start)/1000.0,Count);
- start = getTimer();
- for(i=Count; i>=0; i--) {
- dummy = dummies[i];
- //////////////////////////////////////////
- dummy.dx = dt*(dummy.vx+pvx);
- dummy.dy = dt*(dummy.vy+pvy);
- dummy.x += dummy.dx;
- dummy.y += dummy.dy;
- if(dummy.damp!=0) {
- dummy.ax -= dummy.damp*dummy.ax*dt; //TESTING
- dummy.ay -= dummy.damp*dummy.ay*dt;
- }
- if(dummy.ax==0 && dummy.ay==0) {
- if(dummy.damp!=0) {
- dummy.vx -= dummy.damp*dummy.vx*dt;
- dummy.vy -= dummy.damp*dummy.vy*dt;
- }
- else if(dummy.dragX!=0 || dummy.dragY !=0) {
- if(dummy.vx>0) {
- dummy.vx -= dt*dummy.dragX;
- if(dummy.vx<0) dummy.vx = 0;
- }
- else if(dummy.vx<0) {
- dummy.vx += dt*dummy.dragX;
- if(dummy.vx>0) dummy.vx = 0;
- }
- if(dummy.vy>0) {
- dummy.vy -= dt*dummy.dragY;
- if(dummy.vy<0) dummy.vy = 0;
- }
- else if(dummy.vx<0) {
- dummy.vy += dt*dummy.dragY;
- if(dummy.vy>0) dummy.vy = 0;
- }
- }
- }
- else {
- dummy.vx += dt*dummy.ax;
- dummy.vy += dt*dummy.ay;
- }
- dummy.t+=dt;
- if(dummy.ttl > 0 && dummy.t>=dummy.ttl) {
- dummy.t = dummy.ttl;
- dummy.dead = true;
- }
- //////////////////////////////////////////
- dummy.dx = dt*(dummy.vx+pvx);
- dummy.dy = dt*(dummy.vy+pvy);
- dummy.x += dummy.dx;
- dummy.y += dummy.dy;
- if(dummy.damp!=0) {
- dummy.ax -= dummy.damp*dummy.ax*dt; //TESTING
- dummy.ay -= dummy.damp*dummy.ay*dt;
- }
- if(dummy.ax==0 && dummy.ay==0) {
- if(dummy.damp!=0) {
- dummy.vx -= dummy.damp*dummy.vx*dt;
- dummy.vy -= dummy.damp*dummy.vy*dt;
- }
- else if(dummy.dragX!=0 || dummy.dragY !=0) {
- if(dummy.vx>0) {
- dummy.vx -= dt*dummy.dragX;
- if(dummy.vx<0) dummy.vx = 0;
- }
- else if(dummy.vx<0) {
- dummy.vx += dt*dummy.dragX;
- if(dummy.vx>0) dummy.vx = 0;
- }
- if(dummy.vy>0) {
- dummy.vy -= dt*dummy.dragY;
- if(dummy.vy<0) dummy.vy = 0;
- }
- else if(dummy.vx<0) {
- dummy.vy += dt*dummy.dragY;
- if(dummy.vy>0) dummy.vy = 0;
- }
- }
- }
- else {
- dummy.vx += dt*dummy.ax;
- dummy.vy += dt*dummy.ay;
- }
- dummy.t+=dt;
- if(dummy.ttl > 0 && dummy.t>=dummy.ttl) {
- dummy.t = dummy.ttl;
- dummy.dead = true;
- }
- //////////////////////////////////////////
- dummy.dx = dt*(dummy.vx+pvx);
- dummy.dy = dt*(dummy.vy+pvy);
- dummy.x += dummy.dx;
- dummy.y += dummy.dy;
- if(dummy.damp!=0) {
- dummy.ax -= dummy.damp*dummy.ax*dt; //TESTING
- dummy.ay -= dummy.damp*dummy.ay*dt;
- }
- if(dummy.ax==0 && dummy.ay==0) {
- if(dummy.damp!=0) {
- dummy.vx -= dummy.damp*dummy.vx*dt;
- dummy.vy -= dummy.damp*dummy.vy*dt;
- }
- else if(dummy.dragX!=0 || dummy.dragY !=0) {
- if(dummy.vx>0) {
- dummy.vx -= dt*dummy.dragX;
- if(dummy.vx<0) dummy.vx = 0;
- }
- else if(dummy.vx<0) {
- dummy.vx += dt*dummy.dragX;
- if(dummy.vx>0) dummy.vx = 0;
- }
- if(dummy.vy>0) {
- dummy.vy -= dt*dummy.dragY;
- if(dummy.vy<0) dummy.vy = 0;
- }
- else if(dummy.vx<0) {
- dummy.vy += dt*dummy.dragY;
- if(dummy.vy>0) dummy.vy = 0;
- }
- }
- }
- else {
- dummy.vx += dt*dummy.ax;
- dummy.vy += dt*dummy.ay;
- }
- dummy.t+=dt;
- if(dummy.ttl > 0 && dummy.t>=dummy.ttl) {
- dummy.t = dummy.ttl;
- dummy.dead = true;
- }
- //////////////////////////////////////////
- dummy.dx = dt*(dummy.vx+pvx);
- dummy.dy = dt*(dummy.vy+pvy);
- dummy.x += dummy.dx;
- dummy.y += dummy.dy;
- if(dummy.damp!=0) {
- dummy.ax -= dummy.damp*dummy.ax*dt; //TESTING
- dummy.ay -= dummy.damp*dummy.ay*dt;
- }
- if(dummy.ax==0 && dummy.ay==0) {
- if(dummy.damp!=0) {
- dummy.vx -= dummy.damp*dummy.vx*dt;
- dummy.vy -= dummy.damp*dummy.vy*dt;
- }
- else if(dummy.dragX!=0 || dummy.dragY !=0) {
- if(dummy.vx>0) {
- dummy.vx -= dt*dummy.dragX;
- if(dummy.vx<0) dummy.vx = 0;
- }
- else if(dummy.vx<0) {
- dummy.vx += dt*dummy.dragX;
- if(dummy.vx>0) dummy.vx = 0;
- }
- if(dummy.vy>0) {
- dummy.vy -= dt*dummy.dragY;
- if(dummy.vy<0) dummy.vy = 0;
- }
- else if(dummy.vx<0) {
- dummy.vy += dt*dummy.dragY;
- if(dummy.vy>0) dummy.vy = 0;
- }
- }
- }
- else {
- dummy.vx += dt*dummy.ax;
- dummy.vy += dt*dummy.ay;
- }
- dummy.t+=dt;
- if(dummy.ttl > 0 && dummy.t>=dummy.ttl) {
- dummy.t = dummy.ttl;
- dummy.dead = true;
- }
- //////////////////////////////////////////
- }
- end = getTimer();
- myTrace("ACCESS4", (end-start)/1000.0, Count);
- }
- static private function myTrace(ID:String, time:Number, count:int):void {
- out += [ID, "TOOK", time, "COUNT=",count].join(" ")+"\n";
- }
- }
- }
- class Dummy {
- public var dead:Boolean = false;
- public var t:Number = 0;
- public var dx:Number = 7;
- public var dy:Number = 7;
- public var ttl:Number = 10000000;
- //Physics
- public var x:Number = 7;
- public var y:Number = 7;
- public var vx:Number = 77777;
- public var vy:Number = 77777;
- public var ax:Number = 777;
- public var ay:Number = 777;
- public var dragX:Number = 7;
- public var dragY:Number = 7;
- public var damp:Number = 0.7;
- public function update(dt:Number,pvx:Number,pvy:Number):void {
- dx = dt*(vx+pvx);
- dy = dt*(vy+pvy);
- x += dx;
- y += dy;
- if(damp!=0) {
- ax -= damp*ax*dt; //TESTING
- ay -= damp*ay*dt;
- }
- if(ax==0 && ay==0) {
- if(damp!=0) {
- vx -= damp*vx*dt;
- vy -= damp*vy*dt;
- }
- else if(dragX!=0 || dragY !=0) {
- if(vx>0) {
- vx -= dt*dragX;
- if(vx<0) vx = 0;
- }
- else if(vx<0) {
- vx += dt*dragX;
- if(vx>0) vx = 0;
- }
- if(vy>0) {
- vy -= dt*dragY;
- if(vy<0) vy = 0;
- }
- else if(vx<0) {
- vy += dt*dragY;
- if(vy>0) vy = 0;
- }
- }
- }
- else {
- vx += dt*ax;
- vy += dt*ay;
- }
- t+=dt;
- if(ttl > 0 && t>=ttl) {
- t = ttl;
- dead = true;
- }
- }
- public function update4(dt:Number,pvx:Number,pvy:Number):void {
- dx = dt*(vx+pvx);
- dy = dt*(vy+pvy);
- x += dx;
- y += dy;
- if(damp!=0) {
- ax -= damp*ax*dt; //TESTING
- ay -= damp*ay*dt;
- }
- if(ax==0 && ay==0) {
- if(damp!=0) {
- vx -= damp*vx*dt;
- vy -= damp*vy*dt;
- }
- else if(dragX!=0 || dragY !=0) {
- if(vx>0) {
- vx -= dt*dragX;
- if(vx<0) vx = 0;
- }
- else if(vx<0) {
- vx += dt*dragX;
- if(vx>0) vx = 0;
- }
- if(vy>0) {
- vy -= dt*dragY;
- if(vy<0) vy = 0;
- }
- else if(vx<0) {
- vy += dt*dragY;
- if(vy>0) vy = 0;
- }
- }
- }
- else {
- vx += dt*ax;
- vy += dt*ay;
- }
- t+=dt;
- if(ttl > 0 && t>=ttl) {
- t = ttl;
- dead = true;
- }
- /////////////////
- dx = dt*(vx+pvx);
- dy = dt*(vy+pvy);
- x += dx;
- y += dy;
- if(damp!=0) {
- ax -= damp*ax*dt; //TESTING
- ay -= damp*ay*dt;
- }
- if(ax==0 && ay==0) {
- if(damp!=0) {
- vx -= damp*vx*dt;
- vy -= damp*vy*dt;
- }
- else if(dragX!=0 || dragY !=0) {
- if(vx>0) {
- vx -= dt*dragX;
- if(vx<0) vx = 0;
- }
- else if(vx<0) {
- vx += dt*dragX;
- if(vx>0) vx = 0;
- }
- if(vy>0) {
- vy -= dt*dragY;
- if(vy<0) vy = 0;
- }
- else if(vx<0) {
- vy += dt*dragY;
- if(vy>0) vy = 0;
- }
- }
- }
- else {
- vx += dt*ax;
- vy += dt*ay;
- }
- t+=dt;
- if(ttl > 0 && t>=ttl) {
- t = ttl;
- dead = true;
- }
- /////////////////
- dx = dt*(vx+pvx);
- dy = dt*(vy+pvy);
- x += dx;
- y += dy;
- if(damp!=0) {
- ax -= damp*ax*dt; //TESTING
- ay -= damp*ay*dt;
- }
- if(ax==0 && ay==0) {
- if(damp!=0) {
- vx -= damp*vx*dt;
- vy -= damp*vy*dt;
- }
- else if(dragX!=0 || dragY !=0) {
- if(vx>0) {
- vx -= dt*dragX;
- if(vx<0) vx = 0;
- }
- else if(vx<0) {
- vx += dt*dragX;
- if(vx>0) vx = 0;
- }
- if(vy>0) {
- vy -= dt*dragY;
- if(vy<0) vy = 0;
- }
- else if(vx<0) {
- vy += dt*dragY;
- if(vy>0) vy = 0;
- }
- }
- }
- else {
- vx += dt*ax;
- vy += dt*ay;
- }
- t+=dt;
- if(ttl > 0 && t>=ttl) {
- t = ttl;
- dead = true;
- }
- /////////////////
- dx = dt*(vx+pvx);
- dy = dt*(vy+pvy);
- x += dx;
- y += dy;
- if(damp!=0) {
- ax -= damp*ax*dt; //TESTING
- ay -= damp*ay*dt;
- }
- if(ax==0 && ay==0) {
- if(damp!=0) {
- vx -= damp*vx*dt;
- vy -= damp*vy*dt;
- }
- else if(dragX!=0 || dragY !=0) {
- if(vx>0) {
- vx -= dt*dragX;
- if(vx<0) vx = 0;
- }
- else if(vx<0) {
- vx += dt*dragX;
- if(vx>0) vx = 0;
- }
- if(vy>0) {
- vy -= dt*dragY;
- if(vy<0) vy = 0;
- }
- else if(vx<0) {
- vy += dt*dragY;
- if(vy>0) vy = 0;
- }
- }
- }
- else {
- vx += dt*ax;
- vy += dt*ay;
- }
- t+=dt;
- if(ttl > 0 && t>=ttl) {
- t = ttl;
- dead = true;
- }
- /////////////////
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment