我有一个 600 行左右的 Perl 脚本,不是我写的,而是经过许可使用的,它解析一组 xml 文件并将它们插入到几个 MySQL 表中。大约五月左右,我第一次在我的机器上运行了这个脚本,一切看起来都很好;对于我的目的来说它足够快(每秒多个插入查询),效果很好。我最近获得了更多需要相同解析的数据,所以我打算再次运行它。这一次,速度极其慢 - 每个查询 10-12 秒。
在此期间没有更改任何硬件;唯一重大的软件更改是“升级”到 Windows 8.1,而最初是 8.0。这可能是问题的原因吗?有人知道我该如何解决这个问题吗?按照这个速度,实际上需要三个月才能完成。
我很乐意根据要求提供部分/全部脚本,以及您可能需要的任何其他详细信息。
提前致谢!
最佳答案
要诊断脚本中的性能问题,请考虑安装和使用如下工具:
-
Devel::NYTProf
。这个出色的分析器工具包将准确地向您显示执行 Perl 代码的周期的执行情况。按照设计,它忽略了 I/O 花费的时间,包括数据库调用。 -
DBI::Profile
。这提供了多个级别的调试分析,并且可以向您显示每个数据库操作需要多长时间。它是Devel::NYTProf
的绝佳伴侣,并且易于使用。
如果都不 Devel::NYTProf
和 DBI::Profile
在代码中显示热点(无论是在 Perl 计算中还是在数据库中)查询/事务),那么您应该检查代码中的系统
调用或网络访问,看看这些是否是罪魁祸首。
关于mysql - 为什么我的 Perl 脚本在同一台计算机上的 Windows 8.1 上运行缓慢,而在 8.0 上运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513111/