Actionscript 3 重构(和测试)以提高性能

Actionscript 3 重构(和测试)以提高性能,actionscript-3,testing,refactoring,performance,Actionscript 3,Testing,Refactoring,Performance,我有一个库,它在describeType()之上提供了一个反射API(一个返回包含类或实例的所有规范的XML对象的方法)。由于这个库在其他几个库和框架中使用,我真的希望它尽可能快 我面临的问题是,我不确定重构这些库的代码并使测试和比较结果成为可能的最佳方法。我可以很容易地向代码中添加计时器,记录输出并比较结果,但是手动完成这项工作似乎需要很多工作 这就引出了以下问题: 以前有人做过类似的事情吗 您是如何测试和比较更改的结果的 是否有任何测试框架(也是非actionscript)可以帮助在这种情

我有一个库,它在describeType()之上提供了一个反射API(一个返回包含类或实例的所有规范的XML对象的方法)。由于这个库在其他几个库和框架中使用,我真的希望它尽可能快

我面临的问题是,我不确定重构这些库的代码并使测试和比较结果成为可能的最佳方法。我可以很容易地向代码中添加计时器,记录输出并比较结果,但是手动完成这项工作似乎需要很多工作

这就引出了以下问题:

  • 以前有人做过类似的事情吗
  • 您是如何测试和比较更改的结果的
  • 是否有任何测试框架(也是非actionscript)可以帮助在这种情况下进行性能测试
  • 你还有其他一般的建议吗
你想要一份工作。您的编译器应该附带一个,例如gprof附带了GCC-您需要一个。您的编译器应该附带一个,例如gprof附带了GCC,这是一个问题。

测量和查找是不同的问题

您可以通过查找和修复花费最多时间的内容来加快代码的速度,这不是测量,而是采样—某件事情花费的时间越长,找到它所需的样本就越少

测量的好处在于看实际节省了多少时间

取样时不要丢弃信息,这一点很重要。仅程序计数器()是不够的。您至少需要对整个调用堆栈进行采样。查看行级信息很重要,因为在函数处汇总会丢弃信息。重要的是在随机的墙上时钟时间进行采样,而不是随机的CPU时间(如gprof和其他分析器)。随机CPU时间的样本对花费在不必要的I/O或系统功能上的时间是盲的

一个好的剖析器是有用的。我使用。

测量和发现是不同的问题

您可以通过查找和修复花费最多时间的内容来加快代码的速度,这不是测量,而是采样—某件事情花费的时间越长,找到它所需的样本就越少

测量的好处在于看实际节省了多少时间

取样时不要丢弃信息,这一点很重要。仅程序计数器()是不够的。您至少需要对整个调用堆栈进行采样。查看行级信息很重要,因为在函数处汇总会丢弃信息。重要的是在随机的墙上时钟时间进行采样,而不是随机的CPU时间(如gprof和其他分析器)。随机CPU时间的样本对花费在不必要的I/O或系统功能上的时间是盲的


一个好的剖析器是有用的。我使用。

您可以从(非免费)使用探查器来查看可以改进的地方

您可以在字节码级别进行优化(无需接触源代码),例如使用(仍在开发中,将进行更多优化)

如果您想了解幕后的情况并了解更多编译后的代码,请查看源代码(flash player中使用的Adobe VM)并学习

或者编写多个函数并测量它们的性能,一步一步地进行小的重构,看看有什么好处,你可以用它来测量(不要使用调试播放器,因为有些函数比它慢)

读一些报纸。有很多好人,比如


但是,如果优化后的收益很小,您更愿意保持代码的可读性

您可以从(非免费)使用探查器来查看哪些地方可以改进

您可以在字节码级别进行优化(无需接触源代码),例如使用(仍在开发中,将进行更多优化)

如果您想了解幕后的情况并了解更多编译后的代码,请查看源代码(flash player中使用的Adobe VM)并学习

或者编写多个函数并测量它们的性能,一步一步地进行小的重构,看看有什么好处,你可以用它来测量(不要使用调试播放器,因为有些函数比它慢)

读一些报纸。有很多好人,比如

但是,如果优化后的收益很小,您更愿意保持代码的可读性