2011-04-17 63 views
4

嗨SO :)我正在使用Flashpunk来制作使用Flex和FlashDevelop的游戏(强烈推荐,惊人的lib和IDE)。用于剖析AS3的工具,计时功能以查找瓶颈?

由于系统之间的性能差异很大,我想查找哪里出现减速并只修复这些位。 Flashdevelop具有一个名为Profiler的内置工具,但它仅显示对象的数量和正在使用的内存,而不是执行时间。 Grant Skinner写了一个名为PerformanceTest的好工具,但它似乎适合编写非常具体的优化比较,而不是自动分析代码。

我试图找到的是一个工具,它会在程序运行时自动分析程序,并告诉我哪些函数执行时间最长。我听说CS5有这个内置的,但我想知道是否有任何替代品。

非常感谢您的帮助!

+2

你正在做的假设(和你不是一个人),其计时功能是找到瓶颈的最佳途径。 [有更好的方法。](http://stackoverflow.com/questions/375913/what-c​​an-i-use-to-profile-c-code-in-linux/378024#378024) – 2011-04-17 15:30:23

+0

这是一个伟大的帮助,感谢链接:)我需要弄清楚如何对调用堆栈进行采样。 – capsid 2011-04-17 18:44:48

+0

您应该可以在flex调试器'fdb'下运行,按下Ctrl-C,然后输入'bt'获得回溯。可能你必须告诉它如何处理SIGKILL中断。 – 2011-04-17 20:26:04

回答

0

所以,基本上你想有一个工具来自动测试所有的函数执行时间?是的,你不会找到那个。

您需要使用Grant提供的'PerformanceTest'工具中提到的测试。您还需要手动编写测试,因为没有足够智能的工具可以为您编写测试用例(缺少Watson AI)。这就是所谓的单元测试,它是以功能为基础进行性能测试的唯一方法。任何大型项目都应该有某种形式的测试。

+0

我认为我真正追求的是Mike Dunlavey所提到的方法,谢谢你的建议。 – capsid 2011-04-17 18:45:32

0

FDT事件探查器显示方法的执行时间,如果您使用“性能分析”模式。也许Flexbuilder分析器有类似的功能,但我不确定。有关FDT Profiler结帐this video的详细信息。

+0

感谢您的建议。我绝对不反对购买专业工具来访问整洁的功能,如性能分析:) – capsid 2011-04-17 18:47:46

0

主要有两种类型的分析器:内存分析器和性能分析器。这听起来像你以前使用过内存分析器,但你所描述的称为性能分析器。

FlashBuilder Professional(非标准)包含Performance Profiler。我已经多次使用它,取得了很多成功。 @Mike Dunlavey的方法很好,如果你没有工具,但是我发现Performance Profiler提供的指标是值得的,不管我在开发什么栈(不仅仅是Flash平台)。

B

+0

感谢您的建议。我会尽力改进我对性能分析器的搜索。 – capsid 2011-04-17 23:18:00

0

Flash Builder内置了内存和性能分析器,这听起来或多或少像你想要的。

如果您只是想要一个完整的配置文件,请在配置文件模式下启动程序,执行所有标准任务,然后捕获性能配置文件。如果你想分析一个特定的任务就是在做你想做的动作之前重置数据,那么执行该动作,然后取得该配置文件。

不幸的是,它需要Flash Builder Premium版本,但至少在购买之前您可以尝试一下。

但是,如果你只对分析器感兴趣,那么我觉得付出整个IDE是相当麻烦的。