56 Mẹo Để Cải Thiện Tốc Độ Cho Php
15:26PM 07/01/2011, Lập trình web
1_ Nếu có thể khai báo hàm tĩnh thì có thể tăng tốc độ lên 4 lần.
2_ Echo thì nhanh hơn Print.
3_ Sử dụng nhiều câu lệnh Echo thay vì Echo 1 chuỗi nối vào nhau.
4_ Đặt giá trị lớn nhất cho vòng lặp for trước, và ko đặt trong vòng lặp for.
5_ Hủy các biến bằng hàm unset() để giải phóng bộ nhớ sau khi sử dụng, đặc biệt là những mảng lớn.
6_ Tránh dùng các định nghĩa kiểu: __get, __set, __autoload.
7_ Tránh dùng hàm require_once().
8_ Sử dụng đường dẫn đầy đủ trong includes và requires.
9_ Nếu cần tính thời gian lúc code được thực thi, thì nên dùng $_SERVER['REQUEST_TIME'] thay vì time().
10_ Chú ý sử dụng các hàm strncasecmp, strpbrk and stripos thay vì regex.
11_ Str_replace thì nhanh hơn preg_replace nhưng mà strtr thì nhanh hơn str_replace 4 lần.
12_ Tốt hơn nên dùng câu lệnh Select hoặc Switch thay vì nhiều câu lệnh if, else.
13_ Các biến lỗi sử dụng @ thì rất chậm.
14_ Bật Apache mod_deflate.
15_ Đóng kết nối DB sau khi dùng xong.
16_ $row[‘id'] thì nhanh gấp 7 lần $row[id].
17_ Hạn chế gửi Error messeage.
18_ Không dùng các hàm khi khai báo vòng lặp. Ví dụ: for($x=0; $x
19_ Sử dụng biến cục bộ trong hàm thì nhanh hơn.
20_ Sử dụng biến toàn cục thì chậm hơn 2 lần so với dùng biết cục bộ.
21_ Sử dụng biến cục bộ ko được định nghĩa thì chậm hơn 9-10 lần biến được định nghĩa trước.
22_ Định nghĩa biến toàn cục mà không sử dụng trong hàm thì cũng chậm hơn.
23_ Hàm được triệu gọi thì độc lập với các hàm ở trong lớp định nghĩa nó. Ví dụ sau khi sử dụng gọi hàm đó, ta định nghĩa thêm vào vào lớp chứa hàm đó, thì tốc độ performance không thay đổi.
24_ Hàm được định nghĩa từ lớp thì chạy nhanh hơn hàm định nghĩa từ lớp cơ sở.
25_ Hàm có 1 tham số hoặc hàm có body rỗng thì tương đương với thực thi 7-8 lần phép toán $localvar++. Một hàm bình thường thì tương đương 15 lần phép toán $localvar++.
26_ Nếu khai báo chuỗi mà không có biến ở trong thì sử dụng ‘’ sẽ nhanh hơn dùng “”.
27_ Khi dùng Echo thì dùng phân cách bằng dấu , sẽ nhanh hơn bằng dấu .
28_ Đoạn mã PHP thực thi thì sẽ chậm hơn 2-10 lần so với trang HTML tĩnh khi chạy Apache.
29_ Mã PHP được biên dịch lại mỗi lần, trừ khi các đoạn mã được cache. Cài đặt các sản phẩm cache PHP cơ bản để tăng hiệu suất từ 25-100% qua việc giảm số lần biên dịch lại.
30_ Cách với tất cả khả năng có thể. Memcache là hệ thống cache đối tượng với hiệu suất cao để tăng tốc các ứng dụng web động bằng việc giảm số lần truy suất DB. Opcode cache thì rất hữu ích, giúp các đoạn mã không phải biên dịch lại sau mỗi lần request.
31_ Dùng trick để tính độ dài của chuỗi bằng hàm isset thay vì sử dụng hàm strlen().
Ví dụ:
1 if (strlen($foo) < 5) { echo ”Foo is too short”; }
2 if (!isset($foo{5})) { echo ”Foo is too short”; }
Dùng hàm isset() sẽ nhanh hơn dùng strlen() vì isset() sẽ không tính toán trường hợp lowercase.
32_ Viết ++$i thay cho $i++ sẽ nhanh hơn (3 opcodes so với 4).
33_ Không phải mọi thứ đều dùng hướng đối tượng, sẽ tốn bộ nhớ.
34_ Không phải cài đặt mọi dữ liệu bằng lớp, có thể dùng mảng cũng hữu ích.
35_ Không nên chia ra quá nhiều hàm, tận dụng sử dụng lại code.
36_ Sử dụng các hàm được định nghĩa trước.
37_ Profile code sẽ giúp ta có cái nhìn tổng quan nếu có hiện tượng thắt cổ chai.
38_ mod_gzip có sẵn trong module Apache sẽ nén dữ liệu, và giảm dữ liệu truyền đi tới 80%.
39_ Sử dụng foreach để duyệt các mảng, các tập. Các phần tử PHP4 là theo giá trị, hay hơn nhiều so với theo tham chiếu ở PHP5.
40_ Sử dụng mẫu thiết kế Singleton với các lớp PHP phức tạp.
41_ Sử dụng POST thay cho GET với tất cả các giá trị vì lý do performance của TCP/IP.
42_ Sử dụng các hàm kiểm tra kiểu dữ liệu thay vì dùng Biểu thức chính quy (Regular Expression).
43_ Dùng include/require thay cho include once/require once để đảm bảo opcode cache.
44_ Dùng proxy để truy cập các Web Services (XML hay JSON) từ các tên miền nước ngoài dùng XMLHTTP để tránh lỗi cross-domain.
45_ Dùng thông báo lỗi (E_ALL) trong quá trình debug.
46_ Đặt allowoverride của Apache là “none ” để cải thiện performance khi truy cập file/ thư mục.
47_ Dùng một fileserver nhanh để chạy nội dung tĩnh (thttpd). Ví dụ: static.domain.com.
48_ Hạn chế dùng các câu SQL: SELECT *.
49_ Dùng các phép logic database: queries, joins, views, procedures.
50_ Khởi tạo các biến trước khi sử dụng.
51_ Dùng đường dẫn đầy đủ thay vì đường dẫn tương đối.
52_ Tăng 1 thuộc tính của đối tượng thì chậm hơn việc dùng biến cục bộ 3 lần. ($this->prop++).
53_ Khi xử lý dữ liệu XML, sử dụng Regular Expression thì nhanh hơn dùng DOM hoặc SAX.
54_ Dùng tham chiếu làm tham số cho hàm thì nhanh hơn dùng tham số bình thường.
55_ Dùng INSERT DELAYED nếu như ko cần biết thời gian đưa dữ liệu vào.
56_ Dùng multiple-row INSERT để INSERT nhiều dữ liệu bằng 1 câu Query.