Actionscript 3 连续打多少个电话就太多了?
我正在调试一些代码,看到了一个循环,其中调度了一个事件,并对每个记录进行了远程调用 一切正常,直到准确地说有几百条记录(700条)。这会让flash播放器发出刺耳的声音吗?我应该转移到排队系统吗?多少张唱片太多了 谢谢你的建议 以下是发送连续调用的更新方法:Actionscript 3 连续打多少个电话就太多了?,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,我正在调试一些代码,看到了一个循环,其中调度了一个事件,并对每个记录进行了远程调用 一切正常,直到准确地说有几百条记录(700条)。这会让flash播放器发出刺耳的声音吗?我应该转移到排队系统吗?多少张唱片太多了 谢谢你的建议 以下是发送连续调用的更新方法: var counter:int= 0; for each ( var item:ObjectVo in itemColl) { counter = counter + 1;
var counter:int= 0;
for each ( var item:ObjectVo in itemColl)
{
counter = counter + 1;
var evt:DataValidationEvent = new DataValidationEvent();
evt.myItem = item;
evt.eventType = DataValidationEvent.EVENT_TYPE_PASTE_FROM_EXCEL
if( counter == ( itemColl.length ) ){
evt.isLastCall=true;
}else{
evt.isLastCall=false;
}
evt.dispatch();
}
这是事件处理程序。在“isLastCall”设置为true后,它只被调用一次
private function addItemsFromList( item:itemVo ):void{
var myObj:ObjVo = new ObjVo();
myObj.description = item.description;
myObj.rule = item.objRule;
this.itemsColl.addItem( myObj );
this.itemsColl.itemUpdated( myObj );
this.itemsColl.refresh();
}
如果你要打几百个远程电话,那也可能是服务器放弃了你。我想知道Flash Player是否是这里真正的瓶颈。AVM2可以在几毫秒内发出几千次呼叫 我所能提供的这些小信息就是测量完成循环所需的时间,如果真的是那个循环需要时间,那么通过有选择地注释循环体的各个部分,尝试找到最昂贵的位 编辑: 好的tweening引擎最擅长以60FPS的速度在25K对象上设置一些属性的动画,这远远超过每秒一百万次调用(以及60帧的渲染)。你的代码一定出了问题 代码运行缓慢的问题:
- 实例化比简单调用的成本高出几个数量级。在性能关键的场景中(这一个实际上不是),您最好使用对象池或将自己限制为原语
- 调用函数对象而不是方法也很慢——由于这个问题和前面的问题,常用的事件机制非常慢。仍然是每帧700应该没有问题
- 最后一点似乎是最令人不安的。在不知道事件的处理方式的情况下,很难知道是什么,但最坏的情况是,在每个已调度事件的情况下,您都会处理所有项,这会给您带来O(N^2)运行时成本,并导致
单个迭代的成本,如果单个迭代意味着重新绘制网格,那么这可能真的会出错。无论如何,我认为在整个循环之后调度一个事件就足够了N*(N+1)