私は普段PHPを触っていますが、nodejsの方が処理速度が速いのではないかと感じたため、処理速度を比較してみようと思います。
結果だけ確認したい方は、こちらをどうぞ。(スクロールします)
比較方法
if文で比較し、echo(console.log)をする処理を
for文で100万回実行した平均実行時間で比較を行います。
PHPのバージョンは、7.3.6
nodejsのバージョンは、8.16.1
比較は、2つの方法を使用します。
apacheサーバ(PHP)、expressサーバ(nodejs)でwebページ上に表示される速度。
コンソール上からphpコマンド、nodeコマンドを使用し、実行した速度。
サーバから返される速度を比較
PHP
xamppを使用し、以下のコードで結果を取得します。
<?php
$count = 1000000;
for($i = 0; $i < $count; $i++){
$time_start = microtime(true);
if("test" == "test"){
echo "test";
}
$results[] = microtime(true) - $time_start;
}
echo "<br>";
echo (array_sum($results) / $count) * 10000;
実行結果は、
0.0027450633049011 ms
nodejs
こちらは、「127.0.0.1:3000」で動作します。
const express = require('express')
const app = express()
function speedTest() {
var start = new Date();
var hrstart = process.hrtime();
if("test" == "test"){
console.log("test");
}
var end = new Date() - start;
hrend = process.hrtime(hrstart);
return hrend[1] / 1000000;
}
var count = 1000000;
var results = 0;
app.get('/', function(req, res){
for (var i=0; i<count; i++){
results += speedTest();
}
var test = results / count;
res.json(test);
});
app.listen(3000)
実行結果は、
0.033410115841632046 ms
コンソールからの実行速度を比較
PHP
こちらは、同じコードです。
<?php
$count = 1000000;
for($i = 0; $i < $count; $i++){
$time_start = microtime(true);
if("test" == "test"){
echo "test";
}
$results[] = microtime(true) - $time_start;
}
echo "<br>";
echo (array_sum($results) / $count) * 10000;
実行結果は、
0.42082943439484 ms
nodejs
var count = 1000000;
var results = 0;
function speedTest() {
var start = new Date();
var hrstart = process.hrtime();
if("test" == "test"){
console.log("test");
}
var end = new Date() - start;
hrend = process.hrtime(hrstart);
return hrend[1] / 1000000;
}
for (var i=0; i<count; i++){
results += speedTest();
}
console.log(results / count);
実行結果は、
0.03616859515860955 ms
結果
サーバ
PHP 0.0027450633049011 ms
nodejs 0.033410115841632046 ms
コンソール
PHP 0.42082943439484 ms
nodejs 0.03616859515860955 ms
コンソール上からコマンドを叩いて実行すると、nodejsの方が10倍ほど速いですが、
サーバに表示される速度だとPHPの方が10倍ほど速いようです。