PHPはターゲット関数の実行時間を取得します

WBOY
リリース: 2016-07-25 08:54:05
オリジナル
1077 人が閲覧しました
  1. /**
  2. * class EfficiencyTester
  3. * 効率テスター、関数の実行時間をテストします
  4. * @version 1.0 2013.04.13
  5. * @author Kross
  6. */
  7. class EfficiencyTester {
  8. /**
  9. * var $testTimes
  10. * テスト数
  11. */
  12. private $testTimes = 1000;
  13. /**
  14. * function getTime()
  15. * 時間モードに従ってタイムスタンプを取得します
  16. * @param $timeModel 時間モード、デフォルト: マイクロ秒
  17. * @return int timestamp
  18. */
  19. private function getTime($timeModel = 'MS') {
  20. if ($timeModel == 'MS') {
  21. return microtime();
  22. } else if ($timeModel == 'S') {
  23. return time();
  24. } else {
  25. return microtime();
  26. }
  27. }
  28. /**
  29. * function testOnce()
  30. * ターゲット関数を 1 回テストし、実行時間を返します
  31. * @param $functionName ターゲット関数名
  32. * @param $timeModel 時間モード、デフォルト: マイクロ秒
  33. * @return double ターゲット関数の時間1 回実行 (非常にランダム)
  34. */
  35. public function testOnce($functionName, $timeModel = 'MS') {
  36. $startMicroTime = $this->getTime($timeModel );
  37. $functionName();
  38. $endMicroTime = $this->getTime($timeModel);
  39. $costMicroTime = $endMicroTime - $startMicroTime;
  40. return $costMicroTime;
  41. }
  42. /**
  43. * function test()
  44. * ターゲット関数を複数回テストし、実行時間(平均値)を返します
  45. * @param $functionName ターゲット関数名
  46. * @param $timeModel 時間モード、デフォルト: マイクロ秒
  47. * @return double Target機能実行時間
  48. */
  49. public function test($functionName, $timeModel = 'MS') {
  50. $totalMicroTimes = 0;
  51. for ($i = 1; $i testTimes; $i++) {
  52. $totalMicroTimes += $this->testOnce($functionName);
  53. }
  54. return $totalMicroTimes / $this->testTimes;
  55. }
  56. }
  57. ?>
复制發

测试代:

  1. require_once('../class/EfficiencyTester.class.php');
  2. $e = new EfficiencyTester();
  3. echo $e->test('rand');
  4. ?>
复制コード

最初はmicrotime()を直接使用して取得時間、その後検討して結果想获を取得する単位は秒の実行時間、これを写就不够多态了、その後就写了一个getTime() の関数は、さまざまな単位の時間を取得します。 この現象と同様の関数の実行時間が長くなったのは、getTime() 関数の判断が時間の一部を占めていたためである可能性があります。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート