ลิขสิทธิ์ภาษาอังกฤษของบทนำเป็นของ Reinhold Weber และคำแปลภาษาจีนเขียนโดย Yangyang (aka davidkoree) เวอร์ชันสองภาษาสามารถใช้สำหรับการเผยแพร่ที่ไม่ใช่เชิงพาณิชย์ แต่ต้องระบุผู้เขียนฉบับภาษาอังกฤษ ข้อมูลลิขสิทธิ์ และผู้แต่งฉบับแปลภาษาจีน ระดับการแปลมีจำกัด โปรดแก้ไขให้ฉันด้วย
1. ถ้าเมธอดสามารถทำให้คงที่ได้ ให้ประกาศมันแบบคงที่ สามารถเพิ่มความเร็วได้ถึง 4 เท่า
2.echo เร็วกว่าการพิมพ์
3. ใช้พารามิเตอร์หลายตัวของ echo (การแปล: หมายถึงการใช้ลูกน้ำแทนจุด) แทนการต่อสตริง
4. กำหนดจำนวนสูงสุดของลูปก่อนที่จะดำเนินการ for loop และอย่าคำนวณค่าสูงสุดทุกครั้งที่วนซ้ำ
5. ยกเลิกการลงทะเบียนตัวแปรที่ไม่ได้ใช้ โดยเฉพาะอาร์เรย์ขนาดใหญ่ เพื่อเพิ่มหน่วยความจำ
6. พยายามหลีกเลี่ยงการใช้ __get, __set, __autoload
7.require_once() มีราคาแพง
8. ใช้เส้นทางแบบเต็มเมื่อรวมไฟล์ จะใช้เวลาน้อยลงในการแก้ไขเส้นทางของระบบปฏิบัติการ
9. หากคุณต้องการทราบเวลาที่สคริปต์เริ่มทำงาน (คำอธิบายประกอบ: เซิร์ฟเวอร์ได้รับคำขอของลูกค้า) ควรใช้ $_SERVER['REQUEST_TIME'] ดีกว่า time()
10. ฟังก์ชันจะแทนที่นิพจน์ทั่วไปเพื่อให้ฟังก์ชันเดียวกันสมบูรณ์
11. ฟังก์ชัน str_replace เร็วกว่าฟังก์ชัน preg_replace แต่ฟังก์ชัน strtr มีประสิทธิภาพมากกว่าฟังก์ชัน str_replace ถึงสี่เท่า
12. หากฟังก์ชันการแทนที่สตริงสามารถรับอาร์เรย์หรืออักขระเป็นพารามิเตอร์ได้ และความยาวของพารามิเตอร์ไม่ยาวเกินไป คุณสามารถพิจารณาเขียนโค้ดการแทนที่เพิ่มเติมเพื่อให้แต่ละพารามิเตอร์ที่ส่งผ่านเป็นอักขระ แทนที่จะเขียนเพียงบรรทัดเดียว ของโค้ดที่จะยอมรับอาร์เรย์เป็นพารามิเตอร์สำหรับการสืบค้นและแทนที่
13. จะดีกว่าถ้าใช้คำสั่งสาขาแบบเลือก (หมายเหตุประกอบการแปล: switch case) ดีกว่าการใช้หลายคำสั่ง if, else if
14. การใช้ @ เพื่อบล็อกข้อความแสดงข้อผิดพลาดนั้นไม่มีประสิทธิภาพมากนัก
15. เปิดโมดูล mod_deflate ของ apache
16. ควรปิดการเชื่อมต่อฐานข้อมูลเมื่อใช้งานเสร็จแล้ว
17.$row['id'] มีประสิทธิภาพมากกว่า $row[id] ถึง 7 เท่า
18. ข้อความแสดงข้อผิดพลาดมีราคาแพง
19. พยายามอย่าใช้ฟังก์ชันใน for loops ตัวอย่างเช่น for ($x=0; $x < count($array); $x) จะเรียกใช้ฟังก์ชัน count() ทุกครั้งที่วนซ้ำ
20. การเพิ่มตัวแปรท้องถิ่นในวิธีการนั้นเร็วที่สุด เกือบจะเร็วเท่ากับการเรียกตัวแปรท้องถิ่นในฟังก์ชัน
21. การเพิ่มตัวแปรส่วนกลางจะช้ากว่าการเพิ่มตัวแปรท้องถิ่นถึง 2 เท่า
22. การเพิ่มคุณสมบัติของอ็อบเจ็กต์ (เช่น: $this->prop++) จะช้ากว่าการเพิ่มตัวแปรท้องถิ่นถึง 3 เท่า
23. การเพิ่มตัวแปรโลคอลที่ไม่ได้กำหนดจะช้ากว่าการเพิ่มตัวแปรโลคัลที่กำหนดไว้ล่วงหน้า 9 ถึง 10 เท่า
24. เพียงแค่กำหนดตัวแปรท้องถิ่นโดยไม่เรียกมันในฟังก์ชันก็จะทำให้ความเร็วช้าลงเช่นกัน (ในระดับเดียวกับการเพิ่มตัวแปรท้องถิ่น) PHP อาจจะตรวจสอบเพื่อดูว่ามีตัวแปรส่วนกลางอยู่หรือไม่
25. การเรียกเมธอดดูเหมือนจะไม่ขึ้นอยู่กับจำนวนเมธอดที่กำหนดไว้ในคลาส เนื่องจากฉันได้เพิ่มเมธอด 10 เมธอด (ทั้งก่อนและหลังการทดสอบเมธอด) และไม่มีการเปลี่ยนแปลงในประสิทธิภาพ
26. เมธอดในคลาสที่ได้รับจะรันเร็วกว่าเมธอดเดียวกันที่กำหนดไว้ในคลาสพื้นฐาน
27. การเรียกใช้ฟังก์ชันว่างด้วยพารามิเตอร์ตัวเดียวใช้เวลานานเท่ากับการเพิ่มตัวแปรท้องถิ่น 7 ถึง 8 ครั้ง การเรียกเมธอดที่คล้ายกันใช้เวลาดำเนินการเพิ่มตัวแปรภายในเครื่องเกือบ 15 ครั้ง
28. ใช้เครื่องหมายคำพูดเดี่ยวแทนเครื่องหมายคำพูดคู่เพื่อใส่สตริง ซึ่งจะเร็วกว่า เนื่องจาก PHP จะค้นหาตัวแปรในสตริงที่ล้อมรอบด้วยเครื่องหมายคำพูดคู่ เครื่องหมายคำพูดเดี่ยวจะไม่เป็นเช่นนั้น แน่นอนว่าสามารถทำได้เฉพาะในกรณีที่คุณไม่จำเป็นต้องรวมตัวแปรไว้ในสตริง
29. เมื่อส่งออกหลายสตริง ให้ใช้ลูกน้ำแทนจุดเพื่อแยกสตริง ซึ่งจะเร็วกว่า หมายเหตุ: มีเพียง echo เท่านั้นที่สามารถทำได้ มันเป็น "ฟังก์ชัน" ที่สามารถรับหลายสตริงเป็นพารามิเตอร์ได้ (คำอธิบายประกอบ: คู่มือ PHP บอกว่า echo เป็นโครงสร้างภาษา ไม่ใช่ฟังก์ชันจริง ดังนั้นฟังก์ชันจึงอยู่ในเครื่องหมายคำพูดคู่) .
30.Apache แยกวิเคราะห์สคริปต์ PHP ช้ากว่าการแยกวิเคราะห์หน้า HTML แบบคงที่ 2 ถึง 10 เท่า ลองใช้หน้า HTML แบบคงที่มากขึ้นและสคริปต์น้อยลง
31. สคริปต์นั้นจะถูกคอมไพล์ใหม่ทุกครั้งที่มีการเรียกใช้ ยกเว้นในกรณีที่สามารถแคชสคริปต์ได้ การแนะนำกลไกการแคช PHP มักจะสามารถปรับปรุงประสิทธิภาพได้ 25% ถึง 100% เพื่อลดค่าใช้จ่ายในการคอมไพล์
32. พยายามแคชให้มากที่สุด คุณสามารถใช้ memcached ได้ Memcached คือระบบแคชออบเจ็กต์หน่วยความจำประสิทธิภาพสูงที่สามารถใช้เพื่อเร่งความเร็วแอปพลิเคชันเว็บแบบไดนามิกและลดภาระของฐานข้อมูล การแคชรหัส OP มีประโยชน์เพื่อให้สคริปต์ไม่จำเป็นต้องคอมไพล์ใหม่สำหรับแต่ละคำขอ
33. เมื่อใช้งานสตริงและต้องการตรวจสอบว่าความยาวของสตริงตรงตามข้อกำหนดบางประการหรือไม่ คุณจะต้องใช้ฟังก์ชัน strlen() ตามปกติ ฟังก์ชันนี้ดำเนินการค่อนข้างเร็วเนื่องจากไม่ได้ทำการคำนวณใด ๆ และเพียงส่งคืนความยาวที่ทราบของสตริงที่จัดเก็บไว้ในโครงสร้าง zval (โครงสร้างข้อมูลในตัวของ C ที่ใช้ในการจัดเก็บตัวแปร PHP) อย่างไรก็ตาม เนื่องจาก strlen() เป็นฟังก์ชันจึงค่อนข้างช้าเนื่องจากการเรียกใช้ฟังก์ชันจะต้องผ่านหลายขั้นตอน เช่น ตัวอักษรตัวพิมพ์เล็ก (คำอธิบายประกอบ: หมายถึงชื่อฟังก์ชันตัวพิมพ์เล็ก PHP จะไม่แยกความแตกต่างระหว่างชื่อฟังก์ชันตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ) การค้นหาแฮช จะถูกดำเนินการร่วมกับฟังก์ชันที่เรียกว่า ในบางกรณี คุณสามารถใช้เคล็ดลับ isset() เพื่อเร่งการทำงานของโค้ดของคุณได้
(ตัวอย่างด้านล่าง)
if (strlen($foo) < 5) { echo “Foo สั้นเกินไป”$$ }
(เปรียบเทียบกับเคล็ดลับด้านล่าง)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
การเรียก isset() เกิดขึ้นได้เร็วกว่า strlen() เพราะ isset() เป็นโครงสร้างภาษา ซึ่งต่างจากอย่างหลัง ซึ่งหมายถึง ว่าการดำเนินการไม่จำเป็นต้องมีการค้นหาฟังก์ชันและตัวพิมพ์เล็ก นั่นคือคุณไม่ได้ใช้จ่ายค่าใช้จ่ายมากนักในโค้ดระดับบนสุดในการตรวจสอบความยาวของสตริง
34. เมื่อดำเนินการเพิ่มหรือลดตัวแปร $i, $i++ จะช้ากว่า ++$i ความแตกต่างนี้เป็นข้อแตกต่างเฉพาะสำหรับ PHP และใช้ไม่ได้กับภาษาอื่น ดังนั้นโปรดอย่าแก้ไขโค้ด C หรือ Java ของคุณและคาดว่าโค้ดจะเร็วขึ้นทันที ซึ่งจะใช้งานไม่ได้ ++$i เร็วกว่าเพราะต้องการเพียง 3 คำสั่ง (opcodes) ในขณะที่ $i++ ต้องใช้ 4 คำสั่ง หลังการเพิ่มจริงจะสร้างตัวแปรชั่วคราวที่จะเพิ่มขึ้นในภายหลัง การเพิ่มคำนำหน้าจะเพิ่มขึ้นโดยตรงจากค่าเดิม นี่คือ
35 มากที่สุด ไม่จำเป็นต้องเชิงวัตถุ (OOP) มักจะมีราคาแพง และการเรียกแต่ละวิธีและการเรียกวัตถุใช้หน่วยความจำจำนวนมาก
36. ไม่จำเป็นต้องใช้โครงสร้างข้อมูลทั้งหมดในคลาส แต่อาร์เรย์ก็มีประโยชน์เช่นกัน
37. อย่าแบ่งย่อยวิธีการมากเกินไป คิดให้รอบคอบว่าโค้ดใดที่คุณตั้งใจจะใช้ซ้ำจริงๆ
38. คุณสามารถแบ่งโค้ดเป็นวิธีการได้เสมอเมื่อคุณต้องการ
39. ลองใช้ฟังก์ชันในตัว PHP จำนวนมาก
40. หากมีฟังก์ชันที่ใช้เวลานานมากในโค้ดของคุณ คุณสามารถพิจารณานำไปใช้เป็นส่วนขยาย C ได้
41. โปรไฟล์รหัสของคุณ ตัวตรวจสอบจะบอกคุณว่าส่วนใดของโค้ดใช้เวลาเท่าไร ดีบักเกอร์ Xdebug รวมถึงขั้นตอนการตรวจสอบที่ประเมินความสมบูรณ์โดยรวมของโค้ดของคุณและเปิดเผยจุดคอขวดในโค้ดของคุณ
42.mod_zip สามารถใช้เป็นโมดูล Apache เพื่อบีบอัดข้อมูลของคุณได้ทันทีและลดปริมาณการรับส่งข้อมูลลง 80%
43. กระบวนการเพิ่มประสิทธิภาพประเภทหนึ่ง ซึ่งทำโดยเครื่องมือเพิ่มประสิทธิภาพ PHP ของ Zend เป็นความคิดที่ดีที่จะคำนึงถึงการปรับให้เหมาะสมนี้ไว้ เนื่องจากตัวปรับให้เหมาะสมคำสั่งบางตัวไม่ได้ทำการปรับให้เหมาะสมเหมือนกันทั้งหมด และมีผู้ให้บริการอินเทอร์เน็ต (ISP) และเซิร์ฟเวอร์จำนวนมากที่ไม่ได้ติดตั้งตัวปรับให้เหมาะสมคำสั่งไว้ บทความดีๆ อีกบทความเกี่ยวกับการเพิ่มประสิทธิภาพ PHP เขียนโดย John Lim