Here's a quick tip to help you squeeze extra performance out of your Flex/ActionScript applications when looping over and crunching lots of data on the client side. Use the dictionary class or associative arrays when you can!
Rather than looping through lots of data, trying to find the right object based on its properties, you can use associative arrays to find what you are looking for quickly and easily, without looping over anything.
Associative arrays (also know as hashes or maps) allow you to create key value-pairs used to create a lookup table for data/objects in memory.
In ActionScript, you can use either a generic object class or an array to create a simple map using string based keys for your object values. Here's an example:
var map : Object = new Object();
map[ key ] = value;
OR
var map : Array = new Array();
map[ key ] = value;
When you want to access your object at runtime, you just need to provide the key to retrieve the hashed value:
mySavedValue = map[ key ];
The
dictionary class is very similar to an associative array, however a bit more powerful. The dictionary allows you to create maps based on complex objects as the keys for the key-value pair. For example:
var map : Dictionary = new Dictionary();
var key1 : Object = new Object();
var key2 : Sprite = new Sprite();
var key3 : UIComponent = new UIComponent();
map[ key1 ] = value1
map[ key2 ] = value2
map[ key3 ] = value3
I've found this to be really helpful in scenarios where you may have had nested loops to process data. Rather than doing something like this:
for each ( var o1 : Object in myCollection1 )
{
for each ( var o2 : Object in myCollection2 )
{
if ( o2.id == o1.relatedId )
{
break;
}
}
}
You could do this, which would execute much faster:
var map : Object = new Object();
for each ( var o2 : Object in myCollection2 )
{
map[ o2.id ] = o2;
}
for each ( var o1 : Object in myCollection1 )
{
var foundObject : * = map[ o1.relatedId ];
}
Rather than looping over an unknown amount of items in 2 collections, you just loop over one collection and build the map, then loop over the other collection and access the properties of the map.
You might be surprised the difference in performance that this can make when used properly. You can use this for specialized label functions, looking up reference data, creating data maps, or just about any scenario where you would have to loop over lots of data. If you can get away with it, only build the map once, then access it any time you can throughout the application; this will ensure that you aren't wasting cpu looping through data when you don't need be.
When using the dictionary class, you also need to be careful and clean up after yourself. Otherwise you can end up with memory leaks. You can check out the
livedocs for more information.
相关推荐
通过对这个模块的学习和实践,你不仅能提升易语言的编程技能,还能深入理解字典数组这一重要数据结构的实现细节,为后续的软件开发打下坚实的基础。同时,这也是一种很好的学习如何将理论知识应用于实际编程实践的...
通过学习和理解这些代码,开发者不仅可以掌握易语言的编程技巧,还能深入理解字典数据结构和哈希算法,这对于提升编程能力非常有帮助。同时,这样的模块也可以作为易语言项目中的通用组件,提高代码复用性和效率。
- **列表(List)**: 动态数组,可以存储任意类型的对象,支持索引和切片操作,提供插入和删除元素的方法。 - **元组(Tuple)**: 不可变序列,类似于列表但一旦创建就不能修改。 - **集合(Set)**: 无序不重复元素集...
在IT行业中,数组排序是一个非常基础且重要的概念,特别是在编程领域。...通过学习和研究这个资源,开发者可以提升自己的编程技能,更好地理解和运用排序算法,同时也能掌握测试技巧,提高软件质量。
4. **避免不必要的表创建**:如果需要创建大量小表,应当注意频繁的表创建和销毁会带来显著的性能损耗。如果可以的话,尽量重用表对象。 5. **正确使用表构造语法**:在某些情况下,Lua无法自动推断出数组部分的...
在Swift编程语言中,集合类型是开发者日常工作中不可或缺的一部分,包括数组(Array)、字典(Dictionary)和集合(Set)。这些数据结构的高效使用对于应用性能有着直接影响。"objc.io 集合类型优化swift" 提供了...
例如,通过合理设计存储过程或函数,一次获取多个结果集,减少I/O操作,从而提升性能。 #### 调整ARRAYSIZE参数 **方法八:优化数组大小** 在SQL*Plus、SQL*Forms和Pro*C中调整ARRAYSIZE参数,可以增加每次数据库...
《Python Cookbook》是一本深入解析Python编程语言的权威指南,其英文版提供了丰富的代码示例和实践技巧,帮助读者更深刻地理解Python的核心概念和高级功能。本书通过一系列实用的编程“食谱”(recipes),涵盖了从...
5. **散列表(哈希表)**:通过散列函数实现快速查找,常用于缓存、数据库索引等场景,其性能与散列函数的选择和冲突解决策略有关。 6. **排序算法**:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆...
在《数据结构与C语言结合ARM开发》中,跳表作为一种优化数据结构,通过在有序链表上添加多级索引来提升搜索、插入和删除的效率。跳表利用随机技术决定哪些节点添加向前指针,使得在平均情况下,搜索、插入和删除操作...
- 深入研究算法的实现,可以提高编程技巧,理解如何优化代码以提高性能。 4. **应用领域**: - 数据结构和算法广泛应用于操作系统、数据库、编译器、网络、人工智能等多个领域。 - 在实际开发中,如Web服务器的...
《高级数据结构》是一本深度探索数据结构领域的经典教材,主要面向研究生级别的学习者。它不仅涵盖了基础数据...通过学习这些数据结构和算法,不仅可以提升编程技巧,也为解决现实世界中的复杂计算问题打下坚实基础。
数组是最基础的数据结构,它提供固定大小的存储空间,通过索引进行访问;链表则在内存中分散存储,通过指针连接,插入和删除操作更为灵活。栈是一种后进先出(LIFO)的数据结构,适合处理递归和回溯问题;队列则是...
- **数组**:是最基础的数据结构,它允许通过索引访问元素,具有固定大小和连续的内存空间。 - **链表**:由一系列节点组成,每个节点包含数据和指向下一个节点的引用,不需连续内存空间。 - **栈**:后进先出...
在编程世界中,PHP作为一种广泛使用的服务器端脚本语言,尤其在处理数组方面提供了丰富的方法和技巧。掌握PHP数组的操作对于...在实际应用中,根据具体需求灵活运用这些操作,可以大大提升开发的便捷性和程序的性能。
数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。C语言作为一种强大的、低级的语言,被广泛用于实现这些概念,因为它...通过阅读和分析这些实例,你将能够提升编程技巧,更好地应对各种复杂问题。
在编程领域,不断学习和积累小知识、小技巧是提升编程技能的重要途径。"一些编程小资料"这个压缩包文件,很可能包含了一系列有助于理解和优化编程实践的文档或资源。"xscfreedom"标签可能代表了这些资料的来源或者...
通过这些知识点的学习,读者可以掌握Python中数据操作的核心概念和技巧,为进行更深入的数据分析和模型建立打下坚实的基础。无论是新手还是有经验的数据科学家,都能从这本教程中获得宝贵的知识和技能提升。
数组是一种简单的数据结构,允许我们通过索引快速访问元素;链表则在内存中不连续存储,适合频繁插入和删除操作;栈是后进先出(LIFO)的数据结构,常用于函数调用和表达式求值;队列是先进先出(FIFO)的数据结构,...