提问人:Wallace 提问时间:8/10/2023 更新时间:8/10/2023 访问量:56
PHP 脚本花费的时间比预期的要多
PHP Script Takes So Much Time More Than Expected
问:
我的 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);
}
}
答:
0赞
mlewis54
8/10/2023
#1
虽然我怀疑我们的系统在功能上是相似的,但我使用的是较旧的 (7.1) 版本的 PHP,我在其中得到了:
Total Execution Time: 9.6295697689056 Seconds
对于 10 亿次操作的脚本语言来说,这似乎是完全合理的。我怀疑较新版本的PHP更快。
所以我的回答更像是一个解释,如果不更多地了解你的环境,我不确定你的问题是否有答案。
评论
index = max