【问题标题】:performance difference between strrev() and array_reverse()strrev() 和 array_reverse() 之间的性能差异
【发布时间】:2017-06-05 03:54:29
【问题描述】:

这两者之间有什么性能差异吗?

$bin = 1000 //8 in decimal

$bin_a = strrev($bin);
$bin_a = str_split($bin_a);

$bin_b = str_split($bin);
$bin_b = array_reverse($bin_b);

或者是否有任何函数可以将字符串转换为数组并同时反转?
我想手动将二进制转换为十进制而无需原生 php 函数, 或任何更简单的方法来做到这一点?

【问题讨论】:

  • “有什么性能差异” - 你为什么不自己尝试呢?
  • @FranzGleichmann 我不知道如何测试它:/
  • @yivi 是的,谢谢!但是你的意思是我做错了优化?
  • 性能差异可能太小,不值得麻烦。
  • @yivi 我明白了,谢谢 :)

标签: php binary decimal


【解决方案1】:

没有意义的差异。 并且不难测试。您应该能够毫无困难地编写这样的测试。

<?php

$start_a = microtime(true);
$bin     = "1000"; //8 in decimal

for ($n = 0; $n < 1000000; $n++) {

    $bin_a = strrev($bin);
    $bin_a = str_split($bin_a);
}

$end_a = microtime(true);

echo "Took ", $end_a - $start_a, " seconds \n";

$start_b = microtime(true);


for ($n = 0; $n < 1000000; $n++) {

    $bin_b = str_split($bin);
    $bin_b = array_reverse($bin_b);
}


$end_b = microtime(true);

echo "Took ", $end_b - $start_b, " seconds \n";

输出,一百万次重复:

耗时 0.26819205284119 秒

耗时 0.39758610725403 秒

如果您为此进行优化,您很可能做错了。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2012-05-26
    • 2013-09-02
    • 2014-03-15
    • 2010-12-07
    • 2011-12-03
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多