mysql - 为什么我的 Perl 脚本在同一台计算机上的 Windows 8.1 上运行缓慢,而在 8.0 上运行良好?

标签 mysql perl

我有一个 600 行左右的 Perl 脚本,不是我写的,而是经过许可使用的,它解析一组 xml 文件并将它们插入到几个 MySQL 表中。大约五月左右,我第一次在我的机器上运行了这个脚本,一切看起来都很好;对于我的目的来说它足够快(每秒多个插入查询),效果很好。我最近获得了更多需要相同解析的数据,所以我打算再次运行它。这一次,速度极其慢 - 每个查询 10-12 秒。

在此期间没有更改任何硬件;唯一重大的软件更改是“升级”到 Windows 8.1,而最初是 8.0。这可能是问题的原因吗?有人知道我该如何解决这个问题吗?按照这个速度,实际上需要三个月才能完成。

我很乐意根据要求提供部分/全部脚本,以及您可能需要的任何其他详细信息。

提前致谢!

最佳答案

要诊断脚本中的性能问题,请考虑安装和使用如下工具:

  • Devel::NYTProf 。这个出色的分析器工具包将准确地向您显示执行 Perl 代码的周期的​​执行情况。按照设计,它忽略了 I/O 花费的时间,包括数据库调用。
  • DBI::Profile 。这提供了多个级别的调试分析,并且可以向您显示每个数据库操作需要多长时间。它是 Devel::NYTProf 的绝佳伴侣,并且易于使用。

如果都不 Devel::NYTProfDBI::Profile 在代码中显示热点(无论是在 Perl 计算中还是在数据库中)查询/事务),那么您应该检查代码中的系统调用或网络访问,看看这些是否是罪魁祸首。

关于mysql - 为什么我的 Perl 脚本在同一台计算机上的 Windows 8.1 上运行缓慢,而在 8.0 上运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513111/

相关文章:

perl - 如何检查 Perl 中是否已创建对象?

javascript - 通过 AJAX 无限数据流来更新网页中的字段?

perl - 证明在循环中使用范围运算符不会占用额外的内存

perl - 为什么我可以将类名用作 Moose 类型,而不能用作类型联合的一部分?

android - 我们如何在sql数据库中使用android中的Join操作?

mysql - 用户 + 成员资格 + 组的 SQL 数据库结构

mysql - 对多个表进行 SELECT 查询

mysql - (Oracle) 一对一和插入查询

mysql - 通过乘以两列来在插入之前触发更新值

linux - perl 的 Devel::ebug 如何