PHP 8.0 VS Node.js
การทดสอบแรก Hello World!
อาจมีคำถามนะครับ ว่าแล้วผลการทดสอบลักษณะนี้น่าเชื่อถือได้แค่ไหน ส่วนตัวผมว่ามันก็วัดได้ระดับหนึ่งถ้าเราต้องการเปรียบเทียบประสิทธิภาพในแบบที่ควบคุมได้ เพราะมันไม่มีตัวแปรอื่นๆมาเกี่ยวข้อง เช่นฐานข้อมูล หรือการประมวลผลใดๆ ซึ่ง Hello World! น่าจะเป็นอะไรพื้นฐานที่สามารถทำได้เท่าเทียมกันในทุกภาษาอยู่แล้ว
โค้ด index.php ที่ผมใช้ทดสอบ
<?php
echo 'Hello World!';
โค้ด index.js ที่ผมใช้ในการรันด้วย Node
#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function(request, response) {
response.writeHead(200, { 'Content-Type': 'text/plain' });
response.end('Hello World!');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
ผลการทดสอบด้วย apache bench ตามรูปเลย
แต่ช้าก่อน อย่าเพิ่งดีใจไป เนื่องจากการทดสอบด้านบนเป็นเพียงด้านเดียวเท่านั้น เรามาลองเพิ่มเติมให้ Node สามารถแสดงอิทธิฤทธิ์ได้ด้วยการจัดการประมวลผลเพิ่ม
การทดสอบที่สอง
โค้ดที่ผมเพิ่มเติมมาจะเป็นการเรียงลำดับแบบ bubble sort เพื่อให้มีการประมวลผลเพิ่มขึ้น ทั้งนี้หากมีการเปลี่ยนอัลกอริทึมที่นำมาทดสอบ ผลที่ได้อาจแตกต่างจากนี้นะครับ (อัลกอริทึมแต่ละแบบอาจมีประสิทธิภาพแตกต่างกันในแต่ละภาษา)
index.php
<?php
$array = array(3, 4, 1, 3, 5, 1, 92, 2, 4124, 424, 52, 12);
for ($i = 0; $i < count($array); $i++) {
for ($y = 0; $y < count($array) - 1; $y++) {
if ($array[$y + 1] < $array[$y]) {
$t = $array[$y];
$array[$y] = $array[$y + 1];
$array[$y + 1] = $t;
}
}
}
echo 'Hello World!';
index.js
#!/usr/bin/env nodejs
var http = require('http');
var array = [3, 4, 1, 3, 5, 1, 92, 2, 4124, 424, 52, 12];
for (var i = 0; i < array.length; i++) {
for (var y = 0; y < array.length - 1; y++) {
if (array[y + 1] < array[y]) {
var t = array[y];
array[y] = array[y + 1];
array[y + 1] = t;
}
}
}
http.createServer(function(request, response) {
response.writeHead(200, { 'Content-Type': 'text/plain' });
response.end('Hello World!');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
ผลการเปรียบเทียบระหว่าง PHP 8.0 ที่ใช้ JIT และ Node.js ออกมาดังรูป (สังเกตุนะครับว่ารอบนี้มีการเปิดใช้งาน JIT ด้วย)
ผมไม่ได้มองว่า PHP แย่อย่างที่บางคนคิด แล้วก็ไม่ได้มองว่า Node เด่นจนสามารถข่มภาษาอื่นๆได้ ภาษา PHP จัดว่าเป็นภาษาที่มีประวัติศาตร์มายาวนานภาษาหนึ่งซึ่งยังมีฐานผู้ใช้อยู่เป็นจำนวนมาก และ ตัวภาษาเองก็ยังได้รับการพัฒนาอยู่เรื่อยๆ จนปัจจุบันก็มาถึงเวอร์ชั่น 8 แล้ว อนาคตของ PHP เองก็ดูท่าว่าจะยังอีกนาน รวมถึงภาษาใหม่ๆ ก็ยังมีโอกาสเกิดได้อีกเยอะ ถ้าผมเองเป็นทีมพัฒนาผมคงไม่สนใจที่จะไปตามลบภาพเก่าๆออกจากความทรงจำของใครบางคนหรอก สู้เอาเวลาในอนาคตไปปรับปรุงตัวภาษาให้มันดีขึ้นจะดีกว่า เพราะการเขียนโปรแกรม ปัญหาของโปรแกรม 90% มันเกิดจากคน ไม่ได้เกิดจากตัวภาษา ถ้าจะแก้ต้องแก้ที่คน (แต่มันก็เสียเวลา และไม่จำเป็นเท่าไร)