温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

提高PHP递归效率的方法

发布时间:2021-06-17 10:32:37 来源:亿速云 阅读:265 作者:chen 栏目:编程语言

本篇内容主要讲解“提高PHP递归效率的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“提高PHP递归效率的方法”吧!

我们在实际代码编程中,会发现PHP递归效率是非常低下的,对于程序员来说,他们必须要很好的处理PHP的递归。在这篇文章中我们具体向大家介绍了PHP递归效率的提高方法,希望对又需要的朋友有所帮助。

最近写了一个快速排序的算法,发现PHP中的递归效率不能一刀切,在各种不同的服务器中,可能会表现不一样。

function qsort(&$arr)  {  _quick_sort($arr, 0, count($arr) - 1);  }   /**  * 采用递归算法的快速排序。  *  * @param array $arr 要排序的数组  * @param int $low ***的排序子段  * @param int $high ***的排序字段  */  function _quick_sort(&$arr, $low, $high)  {  $low_data = $arr[$low];  $prev_low = $low;  $prev_high = $high;  while ($low < $high)   {  while ($arr[$high] >= $low_data && $low < $high) {  $high--;  }  if ($low < $high) {  $arr[$low] = $arr[$high];  $low++;  }  while ($arr[$low] <= $low_data && $low < $high) {  $low++;  }  if ($low < $high) {  $arr[$high] = $arr[$low];  $high--;  }  }  $arr[$low] = $low_data;  if ($prev_low < $low) {  _quick_sort($arr, $prev_low, $low);  }  if ($low + 1 < $prev_high) {  _quick_sort($arr, $low + 1, $prev_high);  }  }   function quick_sort(&$arr)  {  $stack = array();  array_push($stack, 0);  array_push($stack, count($arr) -1);  while (!empty($stack)) {  $high = array_pop($stack);  $low = array_pop($stack);  $low_data = $arr[$low];  $prev_low = $low;  $prev_high = $high;  while ($low < $high)   {  while ($arr[$high] >= $low_data && $low < $high) {  $high--;  }  if ($low < $high) {  $arr[$low] = $arr[$high];  $low++;  }  while ($arr[$low] <= $low_data && $low < $high) {  $low++;  }  if ($low < $high) {  $arr[$high] = $arr[$low];  $high--;  }  }  $arr[$low] = $low_data;  if ($prev_low < $low) {  array_push($stack, $prev_low);  array_push($stack, $low);  }  if ($low + 1 < $prev_high) {  array_push($stack, $low + 1);  array_push($stack, $prev_high);  }  }  }

下面是PHP递归效率测试速度的代码:

function qsort_test1()  {  $arr = range(1, 1000);  shuffle($arr);  $arr2 = $arr;  $t1 = microtime(true);  quick_sort($arr2);  $t2 = microtime(true) - $t1;  echo "非递归调用的花费:" . $t2 . "\n";  $arr1 = $arr;  $t1 = microtime(true);  qsort($arr1);  $t2 = microtime(true) - $t1;  echo "递归调用的花费:" . $t2 . "\n";  }

在我的IIS 服务器上(CGI)模式,我的PHP递归效率测试结果是:

非递归调用的花费:0.036401009559631
递归调用的花费:0.053439617156982

在我的Apache 服务器上,我的测试结果是:

非递归调用的花费:0.022789001464844
递归调用的花费:0.014809131622314

PHP递归效率的结果完全相反,而PHP的版本是一样的。

看来对PHP递归效率要具体问题具体分析了。

到此,相信大家对“提高PHP递归效率的方法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI