怀疑精神,测试as3-Signal

最近在家休养充电,看过许多文章都说robotlegs用的as3-signal比adobe官方的事件效率高4倍。报着怀疑精神我写了以下测试。

主要测试在添加事件和广播事件时用时。
 
首先先上测试代码:
// 测试次数
		var forCount:int = 9999;
		// 测试变化的数字
		var tmpNum:int = 0;
		
		// 动态生成方法用于监听
		var funObj:Object = {};
		for (var i:int = 0; i < forCount; i++) 
			funObj["onFF"+i] = function(e:*=null):void{tmpNum++};
		
		var testSn:Signal = new Signal();
		var startTime:int = getTimer();
		for (i = 0; i < forCount; i++) 
		{
			testSn.add(funObj["onFF"+i]);
		}
		trace("Signal添加",i,"个监听用时",getTimer()-startTime,"毫秒");
		
		var testEp:EventDispatcher = new EventDispatcher();
		
		startTime = getTimer();
		for (i = 0; i < forCount; i++) 
		{
			testEp.addEventListener("aaa",funObj["onFF"+i]);
		}
		trace("EventDispatcher添加",i,"个监听用时",getTimer()-startTime,"毫秒");
		
		tmpNum = 0;
		startTime = getTimer();
		testSn.dispatch();
		trace("Signal发消息用时",getTimer()-startTime,"毫秒");
		trace("tmpNum=",tmpNum);
		
		tmpNum = 0;
		startTime = getTimer();
		testEp.dispatchEvent(new Event("aaa"));
		trace("EventDispatcher发消息用时",getTimer()-startTime,"毫秒");
		trace("tmpNum=",tmpNum);
		
		
		startTime = getTimer();
		for (i = 0; i < forCount; i++) 
		{
			testSn.remove(funObj["onFF"+i]);
		}
		trace("Signal移出",i,"个监听用时",getTimer()-startTime,"毫秒");
		
		startTime = getTimer();
		for (i = 0; i < forCount; i++) 
		{
			testEp.removeEventListener("aaa",funObj["onFF"+i]);
		}
		trace("EventDispatcher移出",i,"个监听用时",getTimer()-startTime,"毫秒");

  

 
 测试结果数据如下:

第1次

Signal添加 9999 个监听用时 894 毫秒
EventDispatcher添加 9999 个监听用时 21 毫秒
Signal发消息用时 7 毫秒
tmpNum= 9999
EventDispatcher发消息用时 7 毫秒
tmpNum= 9999
Signal移出 9999 个监听用时 150 毫秒
EventDispatcher移出 9999 个监听用时 109 毫秒

 

第2次

Signal添加 9999 个监听用时 911 毫秒
EventDispatcher添加 9999 个监听用时 27 毫秒
Signal发消息用时 8 毫秒
tmpNum= 9999
EventDispatcher发消息用时 7 毫秒
tmpNum= 9999
Signal移出 9999 个监听用时 146 毫秒
EventDispatcher移出 9999 个监听用时 111 毫秒

 

第3次

Signal添加 9999 个监听用时 955 毫秒
EventDispatcher添加 9999 个监听用时 28 毫秒
Signal发消息用时 7 毫秒
tmpNum= 9999
EventDispatcher发消息用时 7 毫秒
tmpNum= 9999
Signal移出 9999 个监听用时 147 毫秒
EventDispatcher移出 9999 个监听用时 110 毫秒

 

三次结果基本一致,EventDispatcher在添加监听上的效率明显比signal快相当多,而在发消息(托管消息)和移除消息时,两者效率差不多。能力有限吧,我实在想不出还有别的方式能测试signal比EventDispatcher快的。

其实侦听者的代码并不难写,不用遍历播消息的话效率基本都差不多。个人建议用官方的东西,毕竟adobe针对性做过优化,而且功能上来说比signal多。

还想评评robotlegs框架的,我实在太多疑问,不过还没学完……习完再上文章。

 

转载于:https://www.cnblogs.com/pelephone/archive/2012/03/23/as3-signal-test.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值