正在加载...

偶然逛到Adobe的FlashPlayer工程师,Tinic Uro的Blog。看到第一篇文章 ,虽早在2月1日就已发表 ,但标题仍然让我颇感兴趣:《The limits of software rendering》,文中还公布了一个非常强大的AS3的3D项目 – Papervision3D。我迫不及待的看了demonstration(演示)。发现确实性能不错,非常流畅。这里不得不提醒Microsoft赶紧把WPF/E的渲染引擎升级一下,至少我在Firefox下运行“WPF/E” CTP (February 2007) – Page Turn这个所谓的翻页特效,其渲染性能连Flash7能提供的效果都不如。至于在Vista/IE7/8下面能跑多快,我不得而知。

和所有的Flasher一样,我一直非常关注FlashPlayer的渲染效率。记得从FlashPlayer8的位图缓存改进,到FlashPlayer9的粒子特效实现,每一次我都感觉到颇为兴奋,因为这意味着我可以让Flash实现更多有趣的、酷的效果。作为FlashPlayer的Engineer,Tinic无疑是这方面的专家,我想有必要为广大Flash开发者尤其是狂热开发者转述一下他的一些解释。

其实,Tinic Uro也一直在寻找发挥FlashPlayer渲染潜能的挑战。他们希望它(FlashPlayer)能实现目前所有的渲染效果,然而事实却是:目前不可能。

为什么?这源于软件本身(机器码层)在CPU下进行运算的极限限制。这种限制源自CPU中L1和L2缓存的极限。学过微机原理的人都知道(aw附:我们专业课学了,不过我学的很弱)。Tinic Uro提供了一些列测试数据和图表,你也可以采用相关的工具在自己的平台上进行测试,并获得结果数据。

为了“挑战极限”,Uro专门采用了一台AMD Athlon 64 X2 4800+的计算机作为测试机,并采用了AMD官方的CodeAnalyst来作为CPU分析仪。相对应的,如果� 采用Intel的CPU,那么可以用Intel的VTune来作CPU分析。

从分析仪的数据报告中,选出最耗时的三个循环单元进行分析,这三个循环单元一共消耗了40%的CPU运算时间。
第一个循环,是实现位图几何变形所用到的循环计算。它处理旋转和缩放,用了大概20-25%的时间。它的最大特征是内存存取非常不规律,无法好地利用L1与L2缓存;第二个循环,是实现简单的缓冲区拷贝,而且是经过了AMD Athlon 处理器优化指南优化之后的代码。它用了10-15%左右的时间;第三个循环,是处理模糊滤镜的,10-15%的时间。

这组数据表明,任何内存存取,尤其是位图几何变形这种不规律的内存存取非常消耗时间。没有GPU(显卡)的帮助,即使最先进的CPU也爱莫能助。

Uro又给出了两个提示:

  • Tamarin中可以再消除一些瓶颈,不过仍然最消耗时间的就是内存存取
  • 在这些瓶颈上,双核CPU似乎并没有显著的优势

后记:Uro的评论中,有人提议把Director放到FlashPlayer里面,因为,之前Macromedia的Director就支持DirectX。但是看看Director是多么失败吧!看看FlashPlayer现在是多么成功地流行着。不得不感叹,FlashPlayer在各种臭名昭著的ActiveX插件中出淤泥而不染,是一种多么伟大的成功。而且,也有人表示,采用DirectX技术必然会给跨平台造成麻烦。当然,还是听到很多关于呼吁Flash支持GPU渲染的声音。关于这些类似的问题,Uro似乎都没有回复,是否存在于硬件厂商合作上的商业壁垒,我也不得而知,只能拭目以待了。

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 5 条评论
  1. shadow 2007-03-08 08:22:57

    我是学管理的,对于文章内很多东西都不是很懂,但我同样是喜欢着flash~
    在这里我学到了很多知识,真的,感谢阿瓦!!

  2. jinni 2007-03-08 09:24:05

    用director也不可能是directx吧,这必须要微软的合作才做得到啊。
    只有opengl了,我倒是希望flash加入opengl,因为现在最大的瓶颈就是几何渲染了,没有GPU的支持是不可能突破这个瓶颈的。但是部署策略应该要灵活,让用户选择要不要装director,这样才能保持新版本的普及率。

  3. aw 2007-03-08 09:28:03

    呃……我也不是很清楚,我只是看到评论如此说。
    抛开这个不堪,今天看到一个很有意思的概念:Dx3,是M$和Adobe赞助的一个Conference。看来Creative方面的合作多于竞争。毕竟这是一个Open、前途无量的领域,孤军奋战是很不好的。

  4. Chuyue 2007-03-09 09:25:11

    wpf/e 的性能应该 比 flash 强; 应该是代码的效率低;相对来说,其虚拟机的文件尺寸就增大很多,而apollo也不过5-9mb

  5. ewing2 2007-05-27 04:19:10

    director也支持openGL吧?

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍