PHP 脚本花费的时间比预期的要多

PHP Script Takes So Much Time More Than Expected

提问人:Wallace 提问时间:8/10/2023 更新时间:8/10/2023 访问量:56

问:

我的 PHP 脚本需要 32 秒,而使用 Java 做同样的事情需要 ~2 毫秒,使用 golang 需要 200 毫秒。

为什么PHP脚本需要这么多时间?我知道PHP是一种解释型语言,它在解释器中执行的指令比我们看到的要多得多,但是这段代码太简单了,还有其他原因吗?

环境信息:

php version: PHP 7.4.3-4ubuntu2.19 (cli), Zend Engine v3.4.0
hardware: 15G RAM, 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
software: ubuntu 20.04 LTS on Windows WSL2. 

php代码:

<?php
 
     function test(int $max, int $start) {
 
         $time_start = microtime(true);
         while ($start < $max) {
             $start = $start+1;
         }
 
         $time_end = microtime(true);
 
         //dividing with 60 will give the execution time in minutes otherwise seconds
         $execution_time = ($time_end - $time_start);
 
         //execution time of the script
         print('Total Execution Time: '.$execution_time.' Seconds \n');
     }
 
     test(1000000000, 0);

Java 代码:

import java.time.Duration;
import java.time.Instant;
  
import java.util.ArrayList;
import java.io.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.ThreadLocalRandom;
import javax.swing.*;
  
  
  class Benchmark {
 
      public static void main(String args[]) {
 
          int max = 1000000000;
          int index = 0;
 
          long start = System.currentTimeMillis();
 
          while(index < max) {
              index++;
          }
 
          long end = System.currentTimeMillis();
          System.out.println("Elapsed Time in millseconds: "+ (end-start));
          System.out.println("index: "+ index);
 
      }
  }
Java PHP 循环 基准测试

评论

5赞 Louis Wasserman 8/10/2023
Java 几乎可以肯定地通过设置 .index = max

答:

0赞 mlewis54 8/10/2023 #1

虽然我怀疑我们的系统在功能上是相似的,但我使用的是较旧的 (7.1) 版本的 PHP,我在其中得到了:

Total Execution Time: 9.6295697689056 Seconds

对于 10 亿次操作的脚本语言来说,这似乎是完全合理的。我怀疑较新版本的PHP更快。

所以我的回答更像是一个解释,如果不更多地了解你的环境,我不确定你的问题是否有答案。