gpt4 book ai didi

apache-flex - 具有大量 UI 对象的 Flex 应用程序 == 慢?

转载 作者:行者123 更新时间:2023-12-01 07:09:02 24 4
gpt4 key购买 nike

我正在 Flex 3 中构建我的第一个 Flex 自定义组件。它是一个基于“Grid”容器类的数据表,每个单元格中都有一个简单的文本标签。 (DataGrid 和 AdvancedDataGrid 不是满足我需要的合适起点。)该组件在使用小表时工作得很好,但我尝试使用更大的表对其进行压力测试,但对结果感到失望。

组件创建过程有一些慢点,但这些都是我可以优化的,不是我的主要关注点。更让我担心的是 Flex 框架本身的局限性。

这个“大”样本表中有超过 7000 个单元格。这是较大的,但仍比我需要容纳的最大数量少 1-2 个数量级。在标准的 Grid 结构中,组件的主要部分由一个具有 400 个 GridRows 的 GridRows 组成,每个 GridRows 有 16 个 GridItems,以及一些其他较小的辅助 Grids。

表格呈现后,我会发现以下内容:

  • 与鼠标相关的事件触发缓慢。具体来说,我在每个表格单元格上注册了 rollOver/rollOut 事件处理程序,让我突出显示指针下的单元格。在一张小 table 上,我可以非常快速地将鼠标移到 table 上,突出显示会实时跟随指针。对于较大的表格,突出显示非常生涩,每秒仅更改大约两次,跳过许多单元格。
  • 如果我将鼠标光标放在该组件上并将其留在那里,我的 CPU 将被固定(一个处理器核心,无论如何),并保持这种状态,直到我离开该组件,当它变为空闲时。我的组件此时根本没有做任何事情。

  • 感觉 Flex 根本无法扩展以支持这么大的组件树。我不寒而栗地想象它会如何处理 100,000 个细胞。也许我正在插入 Grid 超出其预期用途,但是每个表格单元格有一个对象似乎并不是一个不合理的模型,并且树中的大约 14,000 个对象(每个单元格一个 GridItem 和一个标签)似乎非常适中。

    我还没有从 FlexBuilder 分析器中获得有用的数据;我在做这个工作。目前,我最大的问题是:
  • 我真的通过这个适度的测试突破了 Flex 的极限吗?
  • 我对这个组件的方法是否完全偏离基础?

  • 我在 WinXP 上的 Firefox 下的 Flash Player 9 上运行它。

    最佳答案

    是的,Flex 并不是为了支持大量组件而设计的,众所周知,您应该尽量减少组件的数量,并且不要使用不需要的功能(例如,如果不使用,则使用 DisplayObject 代替 Canvas需要额外的功能)。

    将您的数据与显示的对象完全镜像是不明智的。 DisplayObjects(和相关的类)是相对重量级的,你需要控制你有多少个。

    我想说的是,您正在使用的规模,具有 1000 多个单元,每个单元都有一个事件监听器,肯定会达到 Flex 的极限。

    我认为你应该更好地审视你的方法和架构。我假设您不会同时显示所有 1000 多个项目,也许您应该使用分页并在每个屏幕上显示 100ish,使用上一个/下一个按钮移动到另一个页面。您还可以考虑使用自定义滚动条动态添加和删除行,模拟滚动效果。这要复杂得多。

    关于apache-flex - 具有大量 UI 对象的 Flex 应用程序 == 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/973482/

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