- 浏览: 1056329 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://uh.9ria.com/space-109929-do-blog-id-7583.html 这节内容其实是AS版数据结构与算法,在AS中性能瓶颈在主要渲染,所以大部分开发人把优化精力放在渲染从而忽略在数据层的优化。不同的数据组织(数据结构)直接影响你的数据操作效率,在大多量语言中都提供丰富的对象容器,比如java中的Set,Map,Array,Queue等等,其中封装了大量的针对于某种数据结构的操作方法,从而大大提高了数据操作效率和开发效率,在as3中内置的线性结构只有Array一种,大家也别无选择。在数据量不是很大的时候数组和其它数据结构的差异体现的不是很明显,但是如果你对大量数据进行删除和插入,这时候你的可能需要考虑其它的数据结构,比如:链表。 我们来了解一个不同的数据结构有什么不同的特性,如果你大学学的数据结构没有遗忘的话你可以不用看这一段文字。任何一种存储结构都有他的优点和缺点.下面我们来具体的特性:
数据结构 优点 缺点 数组 随机存储快 查找和删除慢 有序数组 相对无序查找快 删除和插入慢 栈 后进先出方式操作很快 其它操作慢 队列 先进先出方式操作很快 其它操作慢 链表 删除和插入快 查找慢 二叉树 删除和插入,查找都很快 如果非平衡就很慢 堆 对最大数据项删除和插入很快 其它很慢
AS3没有内置这些数据结构,但是我们可以选择第三方库,最著名的就是国外一个人写的polygonal,但是polygonal存在一些严重问题,我的有一篇日志详细说明(http://uh.9ria.com/space-109929-do-blog-id-7310.html),我们采用另一款数据结构库ASDS做demo(这里下载http://code.google.com/p/dsforas/)。 我来举一个简单的游戏实例来说明游戏中数据组织的重要性,假如我们在斗地主游戏中服务器给我们发牌或出牌我们必须保证手中的牌都是有须的,如3,4,5,6,........;我们一般的做法只就是将所有的牌存在一个数据中,然后将向数组中进行插入数据。 public function insert(index:uint,o:*):Void{ var size:int=_array.length; if(index>size) return; for(var i:int=size;i>index;i--){ _array[i]=_array[i-1]; } _array[index]=o; } 在数组中每做一次插入是将插入位置以后的数据向后移动腾出空间后再写入指定数据,在移动数据的过程中消耗了大量时间。
假如我们采用链表的存储方式,由于链表(如果不知道什么是链表可以去百度是查一下,我这里不重复)的结构特性所以插入效率非常高,具体的我看图吧. 以上只是理论,我们来做一个效率测试吧. package { import asds.list.LinkedList; import flash.display.Sprite; public class Demo extends Sprite{ private var _array:Array=[] private var _linked:LinkedList=new LinkedList(10000); public function Demo(){ for(var i:int=0;i<10000;i++){ linked(); array() } } private function linked():void{ _linked.addAtFirst(0); } private function array():void{ insert(0,0); } public function insert(index:uint,o:*):void{ var size:int=_array.length; if(index>size) return; for(var i:int=size;i>index;i--){ _array[i]=_array[i-1]; } _array[index]=o; } } } 以上是一个插入测试,分别对数组和对链表进行1w次插入0到0位置,在profile中可以看到调用array()和linked()消耗总时间分别为24980毫秒和102毫秒,做这种操作linked快24倍(大家可以自行测试,不同的电脑硬/软件环境测试的结果可能不一样)。 以上对数据结构所讲的非常浅,如果大家要深入的学习数据结构,请买一本书好好研究一翻,这篇文章的目的是呼吁大家重视数据结构基础的学习。在我对我面试的一些人和身边的同事中了解得知大部分人对这些基础知识学习和使用经验非常少.如果要把握工程的整体性能,就应该把握好每个环节,并不是在某些方面做的非常突出,而在某些方面又做的不好,从而造成性能瓶颈。
发表评论
-
[心得] for和for...in...遍历数组的效率,与tonyemotion版完全不同
2011-08-22 21:46 0首先tonyemotion版地址:http://bbs.9ri ... -
[转]TLF 文字布局框架的内存问题
2011-08-09 00:34 0http://bbs.airia.cn/home.php? ... -
[转]flash/actionscript3 性能优化汇总
2011-07-27 01:38 0http://www.iamcoding.com/?p=173 ... -
[转]swf / actionscript3 执行顺序
2011-07-27 01:36 0http://www.iamcoding.com/?p=198 ... -
[转]flash重绘机制总结
2011-07-27 01:35 0重绘,是flash性能的一 ... -
文字如何缩放?
2011-07-26 23:20 1190做个文件打印的东东,需要预览,就是把保存的Sprite类缩小再 ... -
AS3的一些优化计算方法
2011-07-06 12:56 0http://www.cnitblog.com/flashli ... -
[转] 关取绝对值的效率问题
2011-05-26 23:47 1478由一个项目用到很多的绝对值,我简单测试了一下,我想知道Math ... -
[转]Flash终极瘦身术--flash减k
2011-05-25 16:40 1219... -
[新手常见问题] Flash代码优化(整理)
2011-05-18 00:12 0看到代码优化就给复制发上来了,发了才发现文章太旧了,部分过时了 ... -
[转] 蛋疼的adobe,他让我蛋疼了一个下午。buttonMode的问题。。。
2011-05-16 21:05 0在为公司整理架构的时候写button组建。。。发现了一个蛋疼问 ... -
Flash的运行机制:异步单线程
2011-05-11 00:34 1906http://bbs.9ria.com/thread-4862 ... -
[心得] AS3游戏中可视对象上限及位图相关的内存消耗实测
2011-04-29 22:44 0http://bbs.9ria.com/viewthread. ... -
使用弱引用
2011-04-28 19:07 0//true表示使用弱引用 var di ... -
[转] 弱引用。
2011-04-27 01:18 0http://bbs.9ria.com/viewthread. ... -
重新关注AS垃圾回收问题
2011-04-12 00:47 0http://www.shch8.com/blog/post/ ... -
[转]Flash 平台应用性能优化官方文档
2011-04-08 19:54 01. 关于存储 使用适当 ... -
[转]位图数据内存优化
2011-03-31 15:55 2738最近协助同事对Flash相册项目做了程序优化,觉得每个优化步骤 ... -
[转]AS3中Timer,setTimeout,setInterval对gc的对比
2011-03-28 17:08 0http://hongweimail.blog.163.com ... -
[转]自制中文字库嵌入——单色图形面积压缩/加密法
2011-03-23 19:59 1932自制中文字库嵌入—— ...
相关推荐
第2章 Flex企业应用开发基础 21 2.1 MXML语言 21 2.1.1 用MXML表示ActionScript对象 22 2.1.2 查看由MXML文件所翻译的ActionScript代码 24 2.1.3 IMXMLObject接口 25 2.2 客户端保持状态 28 2.3 客户端MVC 30 ...
技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...
在Flash中使用ContainerMovieClip创建Flex容器 21.3节.导入FlashCS3的组件 21.4节.认识Cairngorm小型结构 21.5节.创建Cairngorm视图、事件和模型 21.6节.创建Cairngorm命令和事务代理类 21.7节.创建...
默认使用依赖注入容器和 AOP 容器,轻松支持二次扩展开发。丰富的缓存机制,支持对象透明缓存和页面多级缓存,超简单、超易用、可扩展。后台管理全部采用局部刷新技术。特别介绍:门户(CMS)可直接拖拽页面布局,页面...
2.5.1 基于项目的开发 2.5.2 创建Web项目 2.5.3 迁移旧版Visual Studio创建的网站 2.6 Visual Studio调试 2.6.1 单步调试 2.6.2 变量监视 2.6.3 高级断点 2.7 WebDevelopment Helper 2.8 总结 第3...
2.5.1 基于项目的开发 47 2.5.2 创建Web项目 48 2.5.3 迁移旧版Visual Studio创建的网站 49 2.6 Visual Studio调试 51 2.6.1 单步调试 52 2.6.2 变量监视 54 2.6.3 高级断点 55 2.7 WebDevelopment ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
•默认使用依赖注入容器和 AOP 容器,轻松支持二次扩展开发。 •丰富的缓存机制,支持对象透明缓存和页面多级缓存,超简单、超易用、可扩展。 •后台管理全部采用局部刷新技术。 •可以和 asp.net webform/mvc ...
不论你正在制作在 Web 上播送的内容,还是作为软件开发人员的你想要将你的应用程序提升到更高的层次,QuickTime 都能提供业界最全面的平台。QuickTime 拥有值得你信赖的稳若磐石的基础和众多的创新功能,为你的消费...
-为容器控件(比如Panel,Region,Tab等)增加AJAX属性IFrameUrl(feedback:BluesT)。 -重新设计模拟树的下拉列表的实现,避免选中某项后的闪烁。 +2009-11-21 v2.1.5 +Tree优化。 -修正Expanded项和Checked...
-为TreeNode增加AutoPostBack属性,增加事件数据类TreeCheckEventArgs,为Tree增加事件NodeCheck。 -示例在:http://extasp.net/data/tree_run.aspx -Grid增加GetNoSelectionAlertInParentReference函数,用来...