gpt4 book ai didi

actionscript-3 - 如何在 actionscript 中调试 AMF 性能问题

转载 作者:行者123 更新时间:2023-12-04 08:27:28 24 4
gpt4 key购买 nike

问题:

  • 在使用 RemoteObject 从 BlazeDS 加载数据时,如何获取进度信息以调试数据通过网络传输需要多长时间
  • 如何调查和加速 AMF 消息反序列化

背景:

在我的应用中,我们加载了大约 6,000 行数据,速度非常慢。最初我们都指责服务器人员,他们做了很多工作来加快速度。虽然它仍然很慢,但至少有一部分是由于客户造成的。

正如我所说,我们有大约 6,000 行。这些是大型复杂对象,尽管它们嵌套得很深,并且其中包含许多其他复杂对象的列表。

加载需要超过 30 秒。对于前 15 - 20 个旋转器旋转。在过去的 15 秒左右,UI 以一种非常丑陋的方式锁定,因此我怀疑反序列化 AMF 消息需要 15 秒。我被告知 AMF 消息大约有 20 MB。

我怀疑我解析这些行的代码可能是罪魁祸首,但这大约需要 0.3 秒。

首先我想看看从服务器获取第一个字节需要多长时间,然后看看传输需要多长时间,然后研究是否可以加快反序列化。

似乎没有任何方法可以从 RemoteObject 获取进度事件,也没有任何方法可以查看或优化反序列化...

Actionsctipt 传输类由 GAS 在服务器端构建顺便说一句,因此实现 IExternalisable 不是一个选项。

希望有人能帮忙...

重现示例代码:

<?xml version="1.0"?>
<s:WindowedApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete=" myRemoteObject.loadMyData() "
>

<fx:Declarations>

<s:RemoteObject
id="myRemoteObject"
endpoint="myEndPoint"
destination="myDestination"
/>

</fx:Declarations>

</s:WindowedApplication>

最佳答案

AMF 处理(包括序列化/反序列化)由 NetConnection 类完成,它是 FlashPlayer 的“本地”类,因此几乎无法调试。 20 MB 的 AMF 消息很多,因此需要一些时间来获取和反序列化它 - 我认为这些过程都不是可优化的。

我建议以 block 的形式发送数据并在客户端组合它们。如果每个 block 包含 100 行,则每持续四分之一秒将有 60 个“旋转器锁”。然而,总加载时间大致相同(由于执行多个请求而不是一个请求导致的开销可能会更长)而且除了使用不同的序列化方法和/或改变数据结构。

关于actionscript-3 - 如何在 actionscript 中调试 AMF 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com