我有一个flex webapp可以检索一些名字和数据库中的地址。项目工作正常,但我想让它更快。我没有为每个名称请求调用数据库,而是可以将所有名称预先加载到数组和数组中。在用户发出请求时过滤数组。在我沿着这条路走下去之前,我想检查是否有可能在数组中有50,000或100万个元素的应用程序?什么是它减慢应用程序的限制b / f? (我预计在我的应用程序中还有很多工作要做,但是为了这个缘故,我们假设应用程序只包含这个庞大的数组)。
答案 0 :(得分:2)
通过大型数组搜索可能比必要的速度慢,特别是如果您正在谈论100万条记录。
你能把它分成几个仍然很大但更小的阵列吗?如果您总是按帐号搜索,请根据第一个数字或两个数字进行分割。
要直接回答你的问题,对50,000个元素数组的纯AS3处理应该没问题。一旦你超过250,000,我认为你需要分解它。
显示许多UI元素不同。如果您尝试将图表绑定到具有10,000个元素的dataProvider,那就太多了。对于列表或数据网格也是如此。
但是对于纯粹的模型数据,不是ui bound,我建议我的经验高达250,000。
答案 1 :(得分:2)
如果您加载大量数据(不确定您是否使用了列表),您可以查看James Wards发布的关于使用 AsyncListView 与分页来获取数据的帖子在需要的chuncks。要尽快尝试这样的事情。他的可运行示例使用100,000行,分页为100(与HttpService / AMF类型调用一起使用): http://www.jamesward.com/2010/10/11/data-paging-in-flex-4/
答案 2 :(得分:1)
是的,如果你愿意的话,你可能会在数组中填充几百万个项目,并且Flash播放器不会对你大喊大叫。但你真的想要吗?
如果在能够工作之前必须在本地下载整个数据库,应用程序是否需要更长时间才能启动?如果下载那么多数据所需的额外时间不重要,那么一些数据库查找真的值得优化吗?
如果您有一个很好的用例,那么您将不得不关注使用这些数据结构的方式。循环遍历数组以查找项目将会有点慢,因此您需要在本地创建索引,最有可能是使用一些哈希结构。您允许搜索查询的灵活性越高,索引问题就越有趣。