什么是更快的普通物体或动作强类型的对象? [英] What is faster plain objects or strongly typed objects in actionscript?

查看:129
本文介绍了什么是更快的普通物体或动作强类型的对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

那么,

 公共变种用户:对象= {};
用户[名字] =条例;
用户[姓氏] =天才老爹;
 

比,如果我有一个用户值对象慢?

  VAR用户:用户=新用户();
user.firstName =条例;
user.lastName =天才老爹;
 

解决方案

 公共职能SPEEDTEST():无效
{
    VAR typedObjects:数组= [];
    VAR dynamicObjects:数组= [];
    VAR typedObject:用户;
    VAR dynamicObject:对象;
    变种我:= 0;
    变种N:INT = 10000;
    对(我;我n种;我++)
    {
        dynamicObject = {};
        dynamicObjects.push(dynamicObject);
        typedObject =新用户();
        typedObjects.push(typedObject);
    }
    //类型
    VAR时间:INT =的getTimer();
    I = 0;
    N = 10000;
    对(我;我n种;我++)
    {
        typedObject = typedObjects [I]
        typedObject.firstName =条例;
        typedObject.lastName =天才老爹;
    }
    VAR结束:INT =的getTimer() - 时间;
    迹线(TypedObject时间:,结束/ 1000,秒);

    //无类型
    时间=的getTimer();
    I = 0;
    N = 10000;
    对(我;我n种;我++)
    {
        dynamicObject = dynamicObjects [I]
        dynamicObject [名字] =条例;
        dynamicObject [姓氏] =天才老爹;
    }
    结束=的getTimer() - 时间;
    迹线(DynamicObject时间:,结束/ 1000,秒);
}
 

简单的速度测试表明,TypedObject(用户)大致3-3.5x比UntypedObject( {} 更快),但它没有什么你有没有注意到,在一天到一天。试用格兰特斯金纳的性能测试工具来运行一些更好/高级测试:)

3个简单的试运行:

  TypedObject时间:0.002秒
DynamicObject时间:0.007秒
TypedObject时间:0.002秒
DynamicObject时间:0.006秒
TypedObject时间:0.002秒
DynamicObject时间:0.006秒
 

判决:类型化比非类型化快

So is

public var user:Object = {}; 
user["firstName"] = "Bill";
user["lastName"] = "Cosby";

slower than if I have a value object like User?

var user:User = new User();
user.firstName = "Bill";
user.lastName = "Cosby";

解决方案

public function speedTest():void               
{            
    var typedObjects:Array = [];
    var dynamicObjects:Array = [];
    var typedObject:User;
    var dynamicObject:Object;
    var i:int = 0;
    var n:int = 10000;
    for (i; i < n; i++)
    {
        dynamicObject = {};
        dynamicObjects.push(dynamicObject);
        typedObject = new User();
        typedObjects.push(typedObject);
    }
    // typed
    var time:int = getTimer();
    i = 0;
    n = 10000;
    for (i; i < n; i++)
    {
        typedObject = typedObjects[i];
        typedObject.firstName = "Bill";
        typedObject.lastName = "Cosby";
    }
    var end:int = getTimer() - time;
    trace("TypedObject Time: ", end/1000, "sec");

    // untyped
    time = getTimer();
    i = 0;
    n = 10000;
    for (i; i < n; i++)
    {
        dynamicObject = dynamicObjects[i];
        dynamicObject["firstName"] = "Bill";
        dynamicObject["lastName"] = "Cosby";
    }
    end = getTimer() - time;
    trace("DynamicObject Time: ", end/1000, "sec");
}   

Simple speed test shows that TypedObject (User) is roughly 3-3.5x faster than UntypedObject ({}), but it's nothing you'd ever notice in the day-to-day. Try out Grant Skinner's Performance Test Harness to run some better/advanced tests :).

3 simple trial runs:

TypedObject Time:  0.002 sec
DynamicObject Time:  0.007 sec
TypedObject Time:  0.002 sec
DynamicObject Time:  0.006 sec
TypedObject Time:  0.002 sec
DynamicObject Time:  0.006 sec

Verdict: Typed is faster than Untyped.

这篇关于什么是更快的普通物体或动作强类型的对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆