我正在开发一个使用Perl的Web应用程序,我需要考虑加速部分应用程序.
我以为我会开始描述我希望调查的部分的特定调用.我已经完成了一些关于分析Perl代码的搜索,但遗憾的是我发现的大部分内容都说我应该从命令行运行我的perl代码-d:DProf myapp
.这对我来说不太适用,因为我的代码在Web应用程序中.我确实找到了一种方法来使用apache进行分析,但不幸的是,从分析器返回的"最常用"模块都是CPAN模块--Class :: xyz等等.不是非常有用.
有没有人知道除了我将"计时器"代码注入我希望分析这些方法的方法之外的一个好方法?我曾经想过编写一个测试脚本并对其进行分析,但由于我正在研究的代码的性质,这需要比我希望做的更多的工作.
您是否尝试过Devel :: NYTProf(比Devel :: DProf好得多),它可以在Apache下运行吗?您使用的是哪个网络服务器?这是一个vanilla CGI脚本,mod_perl还是别的东西?
如果你正在做数据库的东西,DBI :: Profile可以对你的查询进行基准测试,这是在另一个程序中发生的工作.
然而,真正的诀窍是组织代码,以便您可以进行全方位的测试和分析,而无需在最后将所有内容放在一起以发现某些内容很慢.在短期内,这对火灾没有多大帮助,但从长远来看,它确实可以防止火灾.还有各种方法来伪造Web服务器环境等等,但这是一个不同的问题.:)
如果您正在使用CGI.pm,则可以在命令行上将参数传递给perl脚本,CGI.pm将解释它们,就好像它们是作为HTTP参数传递的一样.所以,如果你正在调试,例如
http://example.com/scripts/example.pl?action=browse&search=grommet&restrict=blah
然后你可以从命令行调用,例如
perl -d:NYTProf documentroot/scripts/example.pl 'action=browse&search=grommet&restrict=blah'