flash性能优化篇(二) 减少cpu开支

废话少说,直接进入细节讨论:

一、使用 REMOVED_FROM_STAGE 和 ADDED_TO_STAGE 事件正确冻结和解冻对象。冻结和解冻对所有对象都很重要,但对显示对象尤其重要。即使显示对象不再位于显示列表中并正在等待作为垃圾回收,他的监听(TimerEvent or Enterframe)仍然占着大量的cpu。所以在显示对象在显示列表中移除时,即使设置为null,也会占内存和cpu ,一定要冻结对象。

冻结的概念在使用 Loader 类加载远程内容时也很重要。通过loader.unloadAndStop(),可以卸载 SWF 文件、自动冻结加载的 SWF 文件 中的每个对象并强制运行垃圾回收器。调用 unloadAndStop() 方法时将执行下列操作:


停止声音。 
将删除注册到 SWF 文件的主时间轴中的侦听器。 
停止 Timer 对象。 
释放硬件外围设备(如摄像头和麦克风)。 
停止每个影片剪辑。 
停止调度 Event.ENTER_FRAME、 Event.FRAME_CONSTRUCTED、 Event.EXIT_FRAME、 Event.ACTIVATE 和 Event.DEACTIVATE。

 


二、使用 Event.ACTIVATE 和 Event.DEACTIVATE 事件检测后台是否处于非活动状态,并相应地优化应用程序。 可以帮助您细调应用程序以使其尽量使用最少的 CPU 周期。
例如,动画可能在用户切换到另一个制表符或将应用程序放入后台时失去焦点:
var originalFrameRate:uint = stage.frameRate;
var standbyFrameRate:uint = 0;
stage.addEventListener ( Event.ACTIVATE, onActivate );
stage.addEventListener ( Event.DEACTIVATE, onDeactivate );
function onActivate ( e:Event ):void
{
    // restore original frame rate
    stage.frameRate = originalFrameRate;
}
function onDeactivate ( e:Event ):void
{
    // set frame rate to 0
    stage.frameRate = standbyFrameRate;
}

三、尽可能考虑禁用鼠标交互。当屏幕上显示许多交互式对象时,特别是当它们重叠时,检测鼠标交互可能会占用大量 CPU 资源。避免此处理的一种简便方法是对不需要任 何鼠标交互的对象禁用鼠标交互。

四、根据内容是否为动画,选择计时器或 ENTER_FRAME 事件。对于执行时间太长的非动画内容,优先选择计时器,而不是 Event.ENTER_FRAME 事件。计时器调度事件无需考虑帧速率。通过此行为,可实现一些重要优化。TimerEvent 对象中提供的 updateAfterEvent() 方法可以提供更高的更新速率。如果需要,此方法会在每次计时器调度事件时强制更新屏幕。

myTimer.start();

myTimer.addEventListener( TimerEvent.TIMER, updateControls );

function updateControls( e:TimerEvent ):void

{

    // Update controls here

    // Force the controls to be updated on screen

    e.updateAfterEvent();

}

调用 updateAfterEvent() 方法不会修改帧速率。它只强制 Flash Player 更新屏幕上已更改的内容。

将应用程序中 Timer 对象和注册的 enterFrame 处理函数的数量降至最少。

如果有多个操作要在enterframe事件中执行代码,尽量把他们放到一个Enterframe里面执行。同样,如果使用的是 Timer 对象,将产生与从多个 Timer 对象创建和调度事件相关联的开销。

在 enterFrame 事件或 Timer 处理函数中,尽量减少对可导致重绘屏幕的显示对象外观的更改。Timer使用完时,一定及时调用stop方法。

五,尽量限制补间的使用。这可以节省 CPU 处理、内存,在移动设备上时,可以延长电池寿命,并且可以提高低性能移动设备上的运行速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CPU和NANDflash控制器是两种不同的芯片,分别用于不同的功能。 CPU是中央处理器的缩写,是一种用于执行计算机指令的芯片。它是计算机的核心部件,负责处理和执行各种计算和控制任务。CPU通常包括运算器、控制器和寄存器等组件,能够执行算术逻辑运算、数据传输和控制操作等任务。它是计算机系统中最重要的部分,对于整个系统的性能和功能起着至关重要的作用。 NANDflash控制器是一种特定类型的控制芯片,用于管理和控制NANDflash存储器的操作。NANDflash是一种非易失性存储器,具有高密度和较低成本等特点。NANDflash控制器负责处理与NANDflash存储器的交互,包括读取、写入和擦除等操作。它管理数据的读取和写入过程,并确保正确的数据传输和存储。 CPU和NANDflash控制器具有不同的功能和作用。CPU主要负责计算和控制任务,控制整个计算机系统的运行;而NANDflash控制器则专门用于管理和控制NANDflash存储器的读写操作。两者在计算机系统中各司其职,相互配合,实现计算和存储的高效运行。 总之,CPU和NANDflash控制器是两种不同的芯片,用于不同的功能。CPU用于执行计算和控制任务,而NANDflash控制器用于管理和控制NANDflash存储器的操作。 ### 回答2: CPU是中央处理器的简称,它是电脑中最重要的组件之一。CPU可以执行各种计算、控制和处理任务,并且是电脑系统的大脑。CPU通过从内存中读取指令、执行运算和控制外部设备来完成各种操作。 NAND闪存控制器是负责管理和控制NAND闪存芯片的硬件。NAND闪存是一种非易失性存储器,广泛用于各种设备,例如闪存驱动器、SSD等。NAND闪存控制器负责处理闪存读取、写入、擦除等操作,并管理闪存中的数据块、页面和块的擦除计数等信息。它还负责管理闪存中的逻辑地址与物理地址的映射关系,以及错误检测和纠正,确保数据的可靠性和一致性。 CPU与NAND闪存控制器之间有着密切的协作关系。当CPU需要读取或写入数据到闪存时,它通过与NAND闪存控制器进行通信,发送相应的指令和地址信息。NAND闪存控制器接收到指令后,负责从闪存中读取数据,并将数据传输给CPU,或者将CPU发送的数据写入到闪存中。 此外,CPU还可以通过与NAND闪存控制器进行协作,实现一些高级的功能。例如,可以通过特定的命令和协议实现闪存中数据的压缩、加密或解密等操作。CPU还可以与NAND闪存控制器一起处理闪存的错误纠正,通过检测和修复数据中的错误位,提高数据的可靠性和稳定性。 综上所述,CPU和NAND闪存控制器之间的合作关系至关重要,它们共同协作完成数据的读取和写入,为电脑系统和其他设备提供高效、可靠的存储解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值