为何PHP7.4读取CSV文件比PHP8.2更快?实测结果求助
PHP7.4与PHP8.2 CSV读取性能测试对比异常分析
我做了一项简单测试:读取包含10万行(每行10列)随机英文单词的CSV文件,脚本将每行数据存入数组。通过Apache Benchmark命令ab -n 100 -l http://localhost:8000发送100次请求,对比PHP7.4与PHP8.2的性能。结果出乎意料:PHP7.4总耗时66.9秒,PHP8.2总耗时71秒,多次测试结果一致。
测试环境完全相同:Docker容器、Ubuntu 20.04系统、默认PHP配置。此前在质数计算测试中,PHP8.2的表现远快于PHP7.4,且PHP8系列一直被宣传为性能最优的PHP版本。
测试脚本
<?php if (!isset($_GET['phpinfo'])) { $csvData = []; if (($handle = fopen("test.csv", "r")) !== FALSE) { $row = 0; while (($data = fgetcsv($handle)) !== FALSE) { $csvData[] = $data; $row++; } fclose($handle); if ($row === 100000) { http_response_code(200); } else { http_response_code(400); } } } else { phpinfo(); }
Dockerfile(PHP8版本仅替换PHP版本为8.2及工作目录)
FROM ubuntu:20.04 ARG PHP_VERSION="7.4" RUN apt update && \ apt -y install --no-install-recommends && \ apt -y install software-properties-common && \ add-apt-repository ppa:ondrej/php && \ apt update && \ apt -y install --no-install-recommends && \ apt -y install php${PHP_VERSION} WORKDIR /var/www/html/php7 COPY . /var/www/html/php7
docker-compose.yml(PHP8版本仅替换php7为php8)
version: "3.9" services: php7: container_name: php7 build: ./php7 ports: - "8000:8000" volumes: - ./php7:/var/www/html/php7 stdin_open: true tty: true restart: always command: php -S 0.0.0.0:8000 -t .
test.csv示例行
"sides","opportunity","thin","remove","mud","this","appearance","proud","bad","round"
内容的提问来源于stack exchange,提问作者piweu
相关产品推荐
相关产品推荐

