GORAGOD.com

ทดสอบความเร็วการเขียน PHP ล้วน กับการเขียน PHP ปนกับ HTML

มีคำถามจากเพื่อนสมาชิกว่า ข้อเสียของการเขียน PHP ปนกับ HTML คืออะไร ซึ่งจริงๆผมเคยตอบเป็นบทความไปแล้ว แต่ที่ยังไม่เคยทำคือ ทดสอบว่า PHP ล้วนเร็วกว่า PHP + HTML จริงหรือไม่ มาลองทำการทดลองดู

ก่อนอื่นอธิบายก่อนว่าทำไมเราถึงไม่ควรเขียน PHP ปนกับ HTML
1. ปัญหาคลาสสิคของการเขียน PHP ปนกับ HTML คือการอ่านโค้ดยาก (ถึงยากมาก) โดยเฉพาะโค้ดที่ต้องมีการตัดสินใจ เช่น if ซึ่งบางทีอยู่ห่างออกไปอีกหลายบรรทัด (เนื่องจากต้องมี HTML คั่น) ทำให้การดูแลรักษาในภายหลัง ตลอดจนการตรวจสอบและแก้ไขข้อผิดพลาดทำได้ยากขึ้น
หนทางที่แนะนำ คือ เอามันซะอย่างใดอย่างหนึ่ง เช่นเขียน PHP ล้วน
<?php
  echo '<p>'.$content.'</p>';
?>

หรือไม่ก็เลี่ยงไปใช้ Template ซึ่งถูกออกแบบมาเพื่อลดความซับซ้อนตรงนี้โดยตรง
ตัวอย่างไฟล์ template
<p>{CONTENT}</p>

การเรียก template มาใช้งาน
<?php
// อ่านไฟล์ template
// $template = '<p>{CONTENT}</p>';
$template = file_get_contents('template.html);
// แทนที่ $content ลงในตำแหน่ง {CONTENT}
echo str_replace('{CONTENT}', $content, $template);

วิธีการจัดการกับ Template มีหลายวิธีนะครับ วิธีนี้เป็นวิธีที่ผมเลือกใช้
2. ความเร็วในการแปลภาษาของ PHP จะลดลง เนื่องจากต้องมีการจัดการสลับการประมวลผลไปมาระหว่างส่วนที่เป็น PHP และ HTML (เราจะมาพิสูจน์ข้อนี้กัน)
โค้ดด้านล่างคือโค้ดที่เราใช้ในการทดสอบ โค้ดไม่มีอะไรมาก ให้ผลลัพท์เหมือนๆกัน ต่างกันแค่วิธีเขียน
<?php
echo 'Current PHP version: ' . phpversion() . '<br>';
// PHP + HTML
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
?>
    <span style="display:none"><?= $i ?></span>
<?php
}
echo '<br>' . (microtime(true) - $start) . ' PHP + HTML<br>';
// PHP Only
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
    echo '<span style="display:none">' . $i . '</span>';
}
echo '<br>' . (microtime(true) - $start) . ' PHP Only<br>';
?>

ผลการทดสอบ
Current PHP version: 7.4.8
0.0060169696807861 PHP + HTML
0.0035500526428223 PHP Only

จะเห็นว่า PHP ล้วนเร็วกว่าเกือบเท่าตัว