[PHP]
- คำสั่ง echo จะทำงานเร็วกว่าคำสั่ง
print
- การสั่ง echo ถ้าใส่ ‘string’
จะทำงานเร็วกว่าใส่ “string” เนื่องจากว่าตัว
php จะตรวจสอบว่ามี variable อยู่ใน
“” หรือเปล่า แต่จะไม่ตรวจสอบใน ‘’
- ในการเขียน for loop ควรกำหนดจำนวนครั้งสูงสุดของการวนรอบไว้ก่อนที่จะเข้ามาใน
loop ไม่ควรมากำหนดค่าหรือเปลี่ยนค่าภายใน loop
- อย่าเรียกใช้ function ข้างใน for
loop เช่น ($x=0; $x < count($array); $x) เพราะมันต้องเสียเวลาเรียก count() ทุกครั้งที่วน
loop
- ตัวแปรไหนที่ไม่ใช้แล้ว ก็ควรจะ unset ทิ้งไปซะ
เก็บไว้ก็เปลืองหน่วยความจำ โดยเฉพาะพวก array ใหญ่ๆ
- คำสั่ง str_replace จะทำงานเร็วกว่าคำสั่ง
preg_replace แต่คำสั่ง strtr ทำงานเร็วกว่าคำสั่ง
str_replace ถึง 4 เท่า
- การใส่เครื่องหมาย @ นำหน้าคำสั่งเพื่อไม่ให้แสดงข้อความ
error ยิ่งจะทำให้ระบบช้าลง
- สั่งปิดการเชื่อมต่อกับ database ถ้าใช้งานเสร็จแล้ว
- การระบุ index ของ array
โดยใส่เครื่องหมาย single quote ‘’ ครอบไว้
เช่น $row[‘id’] จะทำงานเร็วกว่าไม่ใส่เครื่องหมาย เช่น
$row[id] ถึง 7 เท่า
- ถ้าจะใช้ if … elseif … elseif … elseif …
else … หลายๆอันแบบนี้ เปลี่ยนมาใช้ switch case ดีกว่า
- การเพิ่มค่าของ local variable จะทำงานเร็วสุด
และการเรียกใช้ local variable ใน function ก็ใช้เวลาใกล้เคียงกัน
- การเพิ่มค่าของ global variable จะช้ากว่าการเพิ่มค่า
local variable 2 เท่า
- การเพิ่มค่าของ property ของ object
เช่น $this->prop++ จะช้ากว่าการเพิ่มค่าของ
local variable 3 เท่า
- การเพิ่มค่าของ local variable ที่ไม่ได้ถูกประกาศไว้
จะช้าเป็น 9-10 เท่าของการเพิ่มค่าใน local
variable ที่ถูกประกาศไว้ก่อนแล้ว เพราะว่า php ต้องเสียเวลาประกาศตัวแปรใหม่ก่อนแล้วค่อยเพิ่มค่า
- การประกาศ global variable ทิ้งไว้แล้วไม่ใช้
จะทำให้การทำงานช้าลง
- ในภาษา php การใช้ ++$i
จะเร็วกว่า $i++ เพราะคำสั่ง ++$i
ใช้ 3 opcode แต่ $i++ ใช้ 4 opcode
- ในการหาความยาวของ string ปกติแล้วเราจะใช้คำสั่ง
strlen() ซึ่งเป็น function แต่เราสามารถประยุกต์ใช้คำสั่ง
isset() มาใช้เพื่อให้ทำงานเร็วกว่าได้ เพราะคำสั่ง
isset() ไม่ได้เป็น function ดังนั้นจะลดการเสียเวลาในการเรียกใช้
function ไปได้เยอะ ตัวอย่างการใช้งาน
- if(strlen($foo) < 5) { echo
“Foo is too short”; } เทียบกับ
- if (!isset($foo{5})) { echo
“Foo is too short”; }
- ถ้าไม่จำเป็นต้องเขียน OOP ก็ไม่ต้องเขียน
เพราะการเขียน OOP จะใช้ memory มากกว่า
- การประมวลผลคำสั่ง php จะช้ากว่าการแสดงผลหน้า
HTML ธรรมดาอยู่ 2-10 เท่า หน้าไหนที่ไม่จำเป็นต้องเขียนด้วย
php ถ้าเป็นไปได้ก็ควรเขียนเป็น HTML ธรรมดาจะดีกว่า
[MySQL]
- ถ้าจะ SELECT ค่ามาแค่ 1
row ไม่ควรใช้ SELECT * ใช้ SELECT
1 แล้วใส่ Limit เป็น 1 จะดีกว่า
-
SELECT 1 FROM user WHERE state =
‘Alabama’ LIMIT 1″;
- ถ้าจะเก็บค่าใน field เป็น VARCHAR
ซึ่งมีค่าซ้ำๆกับ เช่น มี column ชื่อ
status สำหรับเก็บค่า “active”, “inactive”, “pending” แนะนำให้เก็บเป็นแบบ ENUM จะเร็วกว่า VARCHAR
- ไม่ควรเก็บค่าเป็น NULL ถ้าไม่จำเป็นจริงๆ
เพราะถึงยังไงค่า NULL ก็ยังต้องใช้พื้นที่ในการเก็บข้อมูลอยู่ดี
และอาจมีปัญหาในกรณีที่ต้องการ JOIN หรือเรียกใช้งานภายหลังได้
ทางที่ดีถ้าเราสามารถกำหนดค่า Default ไปเลยได้จะดีกว่า
เช่น height ถ้าไม่ใส่อะไรเลยจะมีค่าเป็น 0 แทนที่จะเป็น NULL
- การเก็บค่า IP Address สามารถเก็บเป็น
UNSIGNED INT ได้ เพราะจะใช้พื้นที่ในการเก็บแค่ 4
Byte เวลาจะเก็บก็แปลงจาก IP เป็น Int
ก่อนก่อนโดยใช้คำสั่ง SQL ชื่อ INET_ATON() และถ้าจะแปลงกลับก็ใช้
INET_NTOA() หรือถ้าจะใช้ PHP
แปลงก็ใช้คำสั่ง ip2long() และแปลงกลับโดยใช้
long2ip()
- การกำหนดความยาวของข้อมูลใน field ไว้
จะดีกว่าไม่กำหนด เช่น กำหนด VARCHAR(20) ดีกว่าเป็น VARCHAR
เฉยๆ เพราะ MySQL จะใช้เวลาในการค้นหาข้อมูลน้อยกว่า
- เลือกใช้ Database Engine ให้เหมาะสม
โดยปกติใน MySQL จะนิยมใช้ Engine อยู่ 2 ตัวคือ MyISAM กับ InnoDB ซึ่งทั้ง 2
แบบก็มีข้อดีข้อเสียแตกต่างกัน MyISAM เหมาะกับงานที่เน้นการอ่านข้อมูลปริมาณมากๆ
แต่ถ้ามีการเขียนเยอะๆ จะทำได้ไม่ดีนัก เช่นถ้าเราสั่ง UPDATE 1 row แล้วทั้ง table จะถูกล็อกไว้ process อื่นจะเข้ามาอ่านไม่ได้จนกว่า process แรกจะทำ Query
เสร็จ แต่ใน InnoDB จะสามารถเลือกล็อกแค่
row เดียวได้
- ระวังเรื่องการใช้ Persistance Connection เพราะบางทีเราเขียนโปรแกรมไม่ดี
ทำให้ Apache เปิด child process ขึ้นมาใหม่
แล้วสร้าง connection ขึ้นมาอีกรอบ ทำให้เกิดปัญหา connection
limit หรือ memory leak ได้
บทความภาษาไทยจาก http://bigta.wordpress.com/2011/04/30
ต้นฉบับภาษาอังกฤษจาก
ไม่มีความคิดเห็น:
แสดงความคิดเห็น