【问题标题】:Why is bcmath in php 4.3 so much faster than php 5+?为什么 php 4.3 中的 bcmath 比 php 5+ 快得多?
【发布时间】:2014-05-27 20:42:20
【问题描述】:

决定运行一个快速测试以了解bcmath 如何在各种版本的 PHP 上运行,并注意到与 4.3 相比,最新和最好的版本在速度方面明显不足,

我想知道是否有人知道这背后的原因是什么,和/或如何在 5+ 上提高速度,使其与 4.3 相当。

另请注意,5.6+ 的内存消耗是 4.3 相同操作所需的三倍:

Performance Test Results (Waterflow)

【问题讨论】:

  • 如果您阅读顶部的水流(图表部分),起伏表明它不是累积的。每个版本都是根据它自己的microtime() 和该版本所需的内存计算的。注意 5.1.4-5.1.6 和 5.4 的下降。
  • 但是看到空文件3v4l.org/BEfoC/perf#tabs - 图形具有相同的形状。所以你不认为是启动时间增加而不是执行时间吗?比较3v4l.org/unrRL
  • @zerkms - 同意,是 php 的整体速度减慢并增加了基本内存使用量,而不是特定功能。 -- 根据您的测试,php 5.5.9 比 php 4.3.0 慢 4 倍,消耗的基本内存是 4 倍。

标签: php performance bcmath


【解决方案1】:

这并不快。您看到的图表不仅包括 bcmath 调用,还包括启动和关闭开销。

$start = microtime(true);
for ($i = 0; $i < 1000; ++$i) {
    bcdiv(40075036, 86164.098903691, 40);
}

echo microtime(true) - $start;

这个 sn-p 将测量 bcdiv 的性能:http://3v4l.org/unrRL

如您所见 - 性能几乎相同。

注意:您可以看到数字非常小,这意味着您不能完全信任它们,您应该了解机器上的任何额外负载都会影响测试结果。

【讨论】:

  • 好的,这解释了bcdiv的具体功能,但是,启动有什么用?模块发生了变化,变得更快,内存消耗更少——至少这是假设。
  • @Sanuel Jackson:我们不知道他们是如何实际运行和测量的。所以根据他们的数字来推测是推测性的
  • 我也可以验证 php 5.5 的启动(至少)需要大约 0.04 秒来初始化(本地测试)---另外,这是一个公开测试>>3v4l.org/htt31跨度>
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2014-04-21
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2015-06-06
相关资源
最近更新 更多