Apache flex 使用自定义项呈现器对datagrid列进行缓慢排序

Apache flex 使用自定义项呈现器对datagrid列进行缓慢排序,apache-flex,actionscript-3,actionscript,flex3,Apache Flex,Actionscript 3,Actionscript,Flex3,我们有一个FlexDataGrid,有3列,其中一列有一个自定义的内联itemrenderer,它通过图像组件呈现单元格中的图标,具体取决于行中的数据 现在的问题是,对该列进行排序的速度非常慢。当我们只有几行数据时,这是可以的,但是当我们有几百或几千行数据时,我们会注意到几秒钟的冻结 有没有人注意到这一点并遇到了同样的问题。如果是这样的话,你有没有找到解决这个问题的好办法?我知道我们可以限制数据提供程序中的行数,但我确实在寻找解决根本问题的方法 -- 更新:有关解决方案的一些信息:我们遇到的问题

我们有一个FlexDataGrid,有3列,其中一列有一个自定义的内联itemrenderer,它通过图像组件呈现单元格中的图标,具体取决于行中的数据

现在的问题是,对该列进行排序的速度非常慢。当我们只有几行数据时,这是可以的,但是当我们有几百或几千行数据时,我们会注意到几秒钟的冻结

有没有人注意到这一点并遇到了同样的问题。如果是这样的话,你有没有找到解决这个问题的好办法?我知道我们可以限制数据提供程序中的行数,但我确实在寻找解决根本问题的方法

--


更新:有关解决方案的一些信息:我们遇到的问题实际上不是由项目渲染器引起的。由于该列中只有两个不同的值,因此在大型数据集上排序非常慢。解决方案是编写一个自定义比较函数,并将一些其他属性附加到要比较的值中,以使其更清晰。

我没有看到项目渲染器出现这种情况,但我肯定看到当列中的数据非常相似时,排序速度变慢。例如,在my中,“性别”列的排序要比“Id”列慢得多。有一个解决方案


如果这不是问题,你只需要优化你的项目渲染器。查看默认DataGridItemRenderer的代码,以查看优化良好的渲染器示例。

无论dataProvider中有多少项,使用的ItemRenderer的影响不应该是类似的吗?我认为它们是被回收的,所以一旦它们填满了数据网格的整个可见部分,它们的性能应该是恒定的。我猜他们的数据只有在排序结束后才会更改,或者不是这样吗?似乎我们有相同的问题。该列只包含2个可能的值,而且它的排序速度非常慢,有很多值(O(n²),最坏的情况是使用快速排序)。修复方法是编写一个自定义比较函数,并将一些其他属性附加到该值中,以使其更加清晰。谢谢你,詹姆斯!酷!我很高兴就是这样。我希望FP能以某种方式解决这个问题。