11RIA 闪客社区 - 最赞 Animate Flash 论坛

标题: 【9RIA—iloveas】— 【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(3) [打印本页]

作者: iloveas    时间: 2019-1-10 15:23
标题: 【9RIA—iloveas】— 【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(3)
本帖最后由 TKCB 于 2019-3-19 09:12 编辑

转载:9RIA游戏开发者社区(天地会)
作者:iloveas(大神)


目录:
【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(1)
【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(2)
【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(3)
【性能优化讨论】趣谈数组/Vector/Dictionary/链表的访问效率(4)



(续上)

类似的还有unshift,这俩方法有时真心让我纠结——Adobe的编译器怎么就不能做完善点,这种错误在编译前检测一下,对你们来说也不会太麻烦吧,估计也就多个元素同时被push/unshift的时候要做的事情多一点。好吧,都怪我多嘴,连编译器机制都没搞清楚,我还瞎扯个毛啊。

用草鱼塘[草鱼塘.length – 1]代替push可以一定程序上提高效率,但是length属性也是个高级方法,所以执行的耗时也比较长。如果有变量记录着当前的长度(比如前面for循环的i变量),那么直接使用自定义变量作为下标将是最佳的选择。

综上所述,Array和Vector都有一定的缺陷,所以在实际应用中的局限性有点大。

Vector寻址的优势只在简单数据类型中才能有所体现,但诸如Vector.<Sprite>这样的集合,想用简单类型来替代,往往都不太现实,这种情况下,无论使用Array还是Vector都相当蛋疼,Vector的push和shift比Array慢,但Array在类型检测方面又不如Vector,鱼与熊掌难以兼得。

绕了这么久,其实最最关键的问题还在于寻址方面的效率。于是司机勉为其难地在地图上记录下每座建筑的具体位置,也就是建筑到马路入口处的距离(图 10)。

(, 下载次数: 45)