About DwThai.Com 00

DwThai.Com Logo

DwThai.Com

Tip and Trick Dreamweaver

ก่อตั้งเมื่อปีพุทธศักราช ๒๕๔๖





ค้นหาข้อมูลใน DwThai.Com

เขียนโปรแกรม (PHP) อย่างไรให้ Run เร็ว [Article ID : 185]


เรื่อง : เขียนโปรแกรม PHP อย่างไรให้ทำงานได้อย่างรวดเร็ว

เคยเข้าไปอ่านบทความของฝรั่ง (Eng) เขามา เรื่องของการพิสูจน์แล้วนำมาแนะนำว่า... เราจะมีการเลือกใช้ไวยากรณ์ของภาษาโปรแกรมมิ่งอย่างไรให้โปรแกรมที่เราพัฒนามีการทำงานได้รวดเร็วและไว เพราะโปรแกรมที่สามารถรันได้ไว ย่อมหมายถึง Performance ที่ดีของโปรแกรม วันนี้ได้เวลาสงสัยต่อมาว่า...จะจริงอย่างที่เขาเขียนแนะนำในบทความหรือไม่ เลยมาทดสอบเขียนโปรแกรมพิสูจน์เอง (การเชื่อโดยไม่มีการพิสูจน์ด้วยตนเอง จะเป็นการงมงายมากกว่าเรื่องจริง) มาลองดูกันนะครับ หรือใครจะเอาโค้ดที่ผมใช้ในการทดสอบไปรันเพื่อพิสูนจ์ด้วยตนเองก็ได้ครับ

Function ที่ใช้ในการจับเวลาการทำงานของโปรแกรม

function getTime(){ 
list($mc, $sc) = explode(" ", microtime());
// microtime() จะส่งค่ากลับมาเป็น micro seconds กับ seconds โดยที่ 2 ค่านี้ถูกแบ่งด้วยช่องว่าง
return (float)$sc + (float)$mc;
// ได้เวลาออกมาเป็น วินาที + ไมโครวินาที
}

FOR…WHILE…DO WHILE วนรอบแบบไหนเร็วกว่ากัน


Code ที่ผมใช้ในการทดสอบสำหรับกรณีการวนรอบ (Loop)

For Loop

$time1 = getTime();
for ($i=1;$i<=10000000;$i++) {
$ii=$i;
}

$time2 = getTime();
$resultTime=($time2)-($time1);
echo ($resultTime);

2.0739099979401

While Loop

$i=1;
$time1 = getTime();
while($i<=10000000){
$ii=$i;
$i++;
}
$time2 = getTime();
$resultTime=($time2)-($time1);
echo ($resultTime);

1.8855090141296

Do..While Loop

$i=1;
$time1 = getTime();
do {
$ii=$i;
$i++;
} while($i<=10000000);
$time2 = getTime();
$resultTime=($time2)-($time1);
echo ($resultTime);

1.8340249061584

โปรแกรมทดสอบข้างต้น ผมเขียนให้มีการวนลูปจำนวน 10,000,000 รอบ (สิบล้านรอบ) จากทั้ง 3 รูปแบบการวนรอบ (Loop) ผลสรุปที่ได้ คือ เวลาที่แสดงในตารางข้างต้น ซึ่งมีหน่วยเป็นวินาที (seconds) การวนรอบเรียงลำดับการทำงานที่เร็วที่สุดไปยังช้าที่สุด คือ
- do…while loop
- while loop
- for loop


การใช้คำสั่งแสดงผล echo กับ print อะไรเร็วกว่ากัน


Echo

$i=1;
$time1 = getTime();
while($i<=3000){
echo $i;
$i++;
}
$time2 = getTime();
$resultTime=($time2)-($time1);

echo ($resultTime);

0.046799898147583


Print

$i=1;
$time1 = getTime();
while($i<=3000){
print $i;
$i++;
}
$time2 = getTime();
$resultTime=($time2)-($time1);

print ($resultTime);

0.046800136566162

ผลการทดสอบได้ออกมาว่า คำสั่ง print ได้เวลาการรันที่มากกว่า echo ซึ่งหมายความว่าคำสั่ง echo มีการทำงานได้ไวกว่า print ผมทดสอบที่การวน 3,000 รอบ

การใช้งานเครื่องหมาย Quote กับข้อมูลที่เป็น String รูปแบบ
Single Quoted หรือ Double Quoted ทำงานได้ไวกว่ากัน


Single Quoted

$time1 = getTime();
while($i<=3000){
echo ‘Test’;
$i++;
}
$time2 = getTime();
$resultTime=($time2)-($time1);

echo ($resultTime);

0.0010290145874023

Double Quoted

$time1 = getTime();
while($i<=3000){
echo "Test";
$i++;
}
$time2 = getTime();
$resultTime=($time2)-($time1);

echo ($resultTime);

0.0010409355163574

Single Quoted หรือ Double Quoted จากการทดสอบปรากฏว่า Single Quoted มีการทำงานได้ไวกว่าการใช้ Double Quoted สังเกตที่เวลาการทดสอบนะครับ ผมทดสอบที่การวน 3,000 รอบ เช่นเดียวกัน
ทั้งหมดเป็นการทดสอบที่ PHP ในเวอร์ชั่น 5.2 ครับ เป็นการรันแบบไม่ผ่าน Web Server คือรันกับตัวแปลภาษาของ PHP โดยตรง (php-cgi.exe) หากท่านต้องการนำโค้ดไปทดสอบ เวลาที่ได้อาจจะคาดเคลื่อนไปบ้าง ทั้งนี้ขึ้นอยู่กับ CPU RAM และอื่น ๆ ในสภาพแวดล้อมที่แตกต่างกัน อาจจะได้ผลการทดสอบที่แตกต่างไปจากนี้ก็ได้ครับ อย่ายึดถือผลการทดสอบจากบทความนี้เป็นบรรทัดฐานการพัฒนางานโปรแกรมของท่านนะครับ ลองพิสูจน์ด้วยตัวเอง แล้วจะได้คำตอบด้วยตัวท่านเอง ผมแค่นึกสนุกทดสอบเล่นเท่านั้น....^^!
อนึ่ง..ไวยากรณ์ต่าง ๆ ของ Programming Language เลือกใช้งานให้เหมาะสมกับปัญหาหรืองานที่พัฒนาอยู่ เขียนให้อ่านเข้าใจง่ายไม่ซับซ้อน จะเป็นผลดีในระยะยาวครับ
About the Author
Mr.Sittichai Raksasuk

Mr.Sittichai Raksasuk

Sittichai is a Web Developer and Web Technology Instructor for over 10 yrs. He is also a webmaster of dwthai.com and author jQuery with Dreamweaver (2010). DwThai.Com is a website for web developer using Adobe Dreamweaver.

Contact with him : dwthai@gmail.com



บทความอื่นที่คุณอาจสนใจ

การออกแบบเว็บเพจให้แสดงกลางจอ Web Browser

เรื่อง : ออกแบบเว็บอย่างไรให้อยู่กลางหน้าจอ ? (Centering a Web Page) คำถามที่ว่า "อาจารย์ครับ/ค่ะ จะเซ็ทเว็บอย่างไ...  

DwThai.Com ใน นสพ.ไทยรัฐ

เรื่อง : เมื่อ DwThai.Com ได้ลงในหนังสือพิมพ์ไทยรัฐ นสพ.ไทยรัฐฉบับวันที่ ๙ ธันวาคม ๒๕๔๖ ...  

CHMOD ที่ควรรู้จัก (Permission on Web Hosting)

เรือง : CHMOD ที่นักพัฒนาเว็บไซต์ควรรู้จัก มีหลายท่านสอบถามมาว่า "ผม Download โปรแกรมภาษา PHP มาเขาบอกว่า...  

ชื่อไฟล์กับเว็บไซต์ (File Name for Web)

เรื่อง : การตั้งชื่อไฟล์ที่ใช้กับเว็บไซต์ ชื่อไฟล์ (File Name)...หลาย ๆ คนคงนึกขำ หรือนึกไม่อยากอ่านกับ...  


Copyright ©2003-2016 dwthai.com. All rights reserved.
This website was created by : S.raksasuk.

ติดต่อ DwThai.Com

e-mail : dwthai@gmail.com
mobile: 08-9495-7296

เขียน Guestbook : DwThai.Com

*
*
*