Hackerpro536
W-------
-
31/10/2013
-
0
-
62 bài viết
Thủ thuật tăng tốc cải thiện và tối ưu hóa code PHP
sau đây tôi xin gửi tới các bạn 1 vài thông tin về Thủ thuật tăng tốc cải thiện và tối ưu hóa code PHP
vào vấn đề luôn nhé
Với những website vừa và nhỏ thì việc cải thiện này không đáng kể lắm. Tuy nhiên, với những website lớn và có lượng truy cập nhiều thì nó sẽ cải thiện rất nhiểu hiệu năng của ứng dụng. Bên cạnh đó bạn còn cải thiện được kỹ năng lập trình của chính mình
Nếu một phương pháp có thể được khai báo static thay vì protected hoặc private chúng ta tùy theo yêu cầu nhưng nên để static để cải thiện tốc độ truy xuất đến hàm. Trường hợp hàm đó bạn cấm truy xuất từ bên ngoài thì bắt buộc phải để private.
Dùng echo nhanh hơn print
Dùng echo nhiều lần sẽ nhanh hơn nối chuỗi, vì trong thuật toán nối chuỗi sẽ mất thời gian xử lý của hệ thống, vì trong nối chuỗi có xử lý thêm các biến trong chuỗi, các ký tự đặc biệt...
Đặt maxvalue cho cho các vòng lặp không xác định để tránh trường hợp lặp vô hạn.
Nên hủy các biến sau khi sử dụng.
Tránh sử dụng nhiều các phương thức __get, __set, __autoload
require_once () là tốn kém hơn require , include_once cũng tốn kém hơn include
Sử dụng đường dẫn đầy đủ trong đường dẫn đến file yêu cầu sẽ tốn ít thời gian gian xử lý của hệ thống để tìm đúng đường dẫn yêu cầu.
Nếu bạn cần phải tìm ra thời gian khi các script bắt đầu thực hiện, $ _SERVER ['REQUEST_TIME'] được ưa thích để sử dụng.
Xem nếu bạn có thể sử dụng strncasecmp, strpbrk và stripos thay vì regex thì đó là 1 điều tốt, str_replace nhanh hơn preg_replace, nhưng strtr nhanh hơn str_replace . Nếu chức năng, chẳng hạn như chức năng thay thế chuỗi, chấp nhận cả hai mảng và các nhân vật duy nhất như các đối số, và nếu danh sách đối số của bạn không phải là quá dài, xem xét việc viết một báo cáo thay thế dự phòng, đi qua một trong những nhân vật tại một thời điểm, thay vì một dòng mã chấp nhận mảng là đối số tìm kiếm và thay thế.
Nó tốt hơn để sử dụng báo cáo chuyển đổi hơn nhiều nếu, nếu người nào khác, báo cáo.
Lỗi ức chế với @ là rất chậm. Không nên dấu lỗi bằng cách để @ như vậy.
Bật mod_deflate apache
Đóng kết nối cơ sở dữ liệu của bạn khi bạn đang không thực hiện xử lý.
$ Row ['id'] là 7 lần nhanh hơn $ row [id]
Sử dụng try catch để bắt lỗi và thông báo lỗi là tốt hơn để hệ thống báo lỗi.
Không sử dụng các chức năng bên trong vòng lặp, chẳng hạn như cho ($ x = 0; $ x prop + +) là 3 lần chậm hơn so với một biến địa phương.
Tăng một biến địa phương không xác định là 9-10 lần chậm hơn so với trước khi khởi tạo.
Chỉ cần khai báo một biến toàn cầu mà không sử dụng nó trong một hàm cũng chậm việc xử lý (bằng chi phí tương tự như khai báo sử dụng một biến var địa phương). PHP có thể sẽ kiểm tra để xem liệu toàn cầu tồn tại.
Phương pháp gọi xuất hiện để được độc lập với số lượng các phương pháp được định nghĩa trong lớp vì tôi bổ sung thêm 10 phương pháp thử nghiệm lớp học (trước và sau khi các phương pháp thử nghiệm) không có thay đổi trong hoạt động.
Phương pháp trong các lớp học có nguồn gốc chạy nhanh hơn so với những người được định nghĩa trong lớp cơ sở.
Một cuộc gọi chức năng với một tham số và chức năng một cơ thể trống rỗng mất khoảng thời như làm 7-8 $ localvar + + hoạt động. Một cuộc gọi phương pháp tương tự của khóa học khoảng 15 $ localvar + + hoạt động.
Xung quanh chuỗi của bạn bằng cách thay vì "sẽ làm cho mọi việc giải thích một chút nhanh hơn vì php trông cho biến bên trong "..." nhưng không phải bên trong '...'. Tất nhiên bạn chỉ có thể làm điều này khi bạn không cần phải có biến trong chuỗi.
Khi lặp lại chuỗi nó nhanh hơn để tách chúng bằng dấu phẩy thay vì các dấu chấm. Lưu ý: Điều này chỉ làm việc với echo, mà là một chức năng có thể mất một số dây như các đối số.
Một kịch bản PHP sẽ được phục vụ ít nhất 2-10 lần chậm hơn so với một trang HTML tĩnh bởi Apache. Hãy thử sử dụng các trang HTML tĩnh hơn và các kịch bản ít hơn.
PHP kịch bản được biên dịch lại mỗi lần trừ khi kịch bản được lưu trữ. Cài đặt một sản phẩm bộ nhớ đệm PHP thường gia tăng hiệu suất 25-100% bằng cách loại bỏ thời gian biên dịch.
Bộ nhớ cache như nhiều càng tốt. Sử dụng memcached - memcached là một bộ nhớ hệ thống hiệu năng cao đối tượng bộ nhớ đệm nhằm mục đích để tăng tốc độ ứng dụng web động bằng cách giảm tải cơ sở dữ liệu. OP cache mã là hữu ích để kịch bản của bạn không có được biên soạn trên mọi yêu cầu
Khi làm việc với chuỗi và bạn cần phải kiểm tra xem chuỗi, hoặc là của một độ dài nhất định bạn sẽ dễ hiểu sẽ muốn sử dụng strlen () chức năng. Chức năng này là khá nhanh chóng kể từ khi hoạt động của nó không thực hiện bất kỳ tính toán nhưng chỉ trả lại chiều dài đã được biết đến của một chuỗi có sẵn trong cơ cấu zval (nội C struct được sử dụng để lưu trữ các biến trong PHP). Tuy nhiên vì strlen () là một chức năng nó vẫn còn hơi chậm vì các cuộc gọi chức năng yêu cầu các hoạt động như chữ thường & hashtable tra cứu tiếp theo là thực hiện chức năng nói. Trong một số trường hợp, bạn có thể cải thiện tốc độ của mã của bạn bằng cách sử dụng một thủ thuật isset ().
vào vấn đề luôn nhé
Với những website vừa và nhỏ thì việc cải thiện này không đáng kể lắm. Tuy nhiên, với những website lớn và có lượng truy cập nhiều thì nó sẽ cải thiện rất nhiểu hiệu năng của ứng dụng. Bên cạnh đó bạn còn cải thiện được kỹ năng lập trình của chính mình
Nếu một phương pháp có thể được khai báo static thay vì protected hoặc private chúng ta tùy theo yêu cầu nhưng nên để static để cải thiện tốc độ truy xuất đến hàm. Trường hợp hàm đó bạn cấm truy xuất từ bên ngoài thì bắt buộc phải để private.
Dùng echo nhanh hơn print
Dùng echo nhiều lần sẽ nhanh hơn nối chuỗi, vì trong thuật toán nối chuỗi sẽ mất thời gian xử lý của hệ thống, vì trong nối chuỗi có xử lý thêm các biến trong chuỗi, các ký tự đặc biệt...
Đặt maxvalue cho cho các vòng lặp không xác định để tránh trường hợp lặp vô hạn.
Nên hủy các biến sau khi sử dụng.
Tránh sử dụng nhiều các phương thức __get, __set, __autoload
require_once () là tốn kém hơn require , include_once cũng tốn kém hơn include
Sử dụng đường dẫn đầy đủ trong đường dẫn đến file yêu cầu sẽ tốn ít thời gian gian xử lý của hệ thống để tìm đúng đường dẫn yêu cầu.
Nếu bạn cần phải tìm ra thời gian khi các script bắt đầu thực hiện, $ _SERVER ['REQUEST_TIME'] được ưa thích để sử dụng.
Xem nếu bạn có thể sử dụng strncasecmp, strpbrk và stripos thay vì regex thì đó là 1 điều tốt, str_replace nhanh hơn preg_replace, nhưng strtr nhanh hơn str_replace . Nếu chức năng, chẳng hạn như chức năng thay thế chuỗi, chấp nhận cả hai mảng và các nhân vật duy nhất như các đối số, và nếu danh sách đối số của bạn không phải là quá dài, xem xét việc viết một báo cáo thay thế dự phòng, đi qua một trong những nhân vật tại một thời điểm, thay vì một dòng mã chấp nhận mảng là đối số tìm kiếm và thay thế.
Nó tốt hơn để sử dụng báo cáo chuyển đổi hơn nhiều nếu, nếu người nào khác, báo cáo.
Lỗi ức chế với @ là rất chậm. Không nên dấu lỗi bằng cách để @ như vậy.
Bật mod_deflate apache
Đóng kết nối cơ sở dữ liệu của bạn khi bạn đang không thực hiện xử lý.
$ Row ['id'] là 7 lần nhanh hơn $ row [id]
Sử dụng try catch để bắt lỗi và thông báo lỗi là tốt hơn để hệ thống báo lỗi.
Không sử dụng các chức năng bên trong vòng lặp, chẳng hạn như cho ($ x = 0; $ x prop + +) là 3 lần chậm hơn so với một biến địa phương.
Tăng một biến địa phương không xác định là 9-10 lần chậm hơn so với trước khi khởi tạo.
Chỉ cần khai báo một biến toàn cầu mà không sử dụng nó trong một hàm cũng chậm việc xử lý (bằng chi phí tương tự như khai báo sử dụng một biến var địa phương). PHP có thể sẽ kiểm tra để xem liệu toàn cầu tồn tại.
Phương pháp gọi xuất hiện để được độc lập với số lượng các phương pháp được định nghĩa trong lớp vì tôi bổ sung thêm 10 phương pháp thử nghiệm lớp học (trước và sau khi các phương pháp thử nghiệm) không có thay đổi trong hoạt động.
Phương pháp trong các lớp học có nguồn gốc chạy nhanh hơn so với những người được định nghĩa trong lớp cơ sở.
Một cuộc gọi chức năng với một tham số và chức năng một cơ thể trống rỗng mất khoảng thời như làm 7-8 $ localvar + + hoạt động. Một cuộc gọi phương pháp tương tự của khóa học khoảng 15 $ localvar + + hoạt động.
Xung quanh chuỗi của bạn bằng cách thay vì "sẽ làm cho mọi việc giải thích một chút nhanh hơn vì php trông cho biến bên trong "..." nhưng không phải bên trong '...'. Tất nhiên bạn chỉ có thể làm điều này khi bạn không cần phải có biến trong chuỗi.
Khi lặp lại chuỗi nó nhanh hơn để tách chúng bằng dấu phẩy thay vì các dấu chấm. Lưu ý: Điều này chỉ làm việc với echo, mà là một chức năng có thể mất một số dây như các đối số.
Một kịch bản PHP sẽ được phục vụ ít nhất 2-10 lần chậm hơn so với một trang HTML tĩnh bởi Apache. Hãy thử sử dụng các trang HTML tĩnh hơn và các kịch bản ít hơn.
PHP kịch bản được biên dịch lại mỗi lần trừ khi kịch bản được lưu trữ. Cài đặt một sản phẩm bộ nhớ đệm PHP thường gia tăng hiệu suất 25-100% bằng cách loại bỏ thời gian biên dịch.
Bộ nhớ cache như nhiều càng tốt. Sử dụng memcached - memcached là một bộ nhớ hệ thống hiệu năng cao đối tượng bộ nhớ đệm nhằm mục đích để tăng tốc độ ứng dụng web động bằng cách giảm tải cơ sở dữ liệu. OP cache mã là hữu ích để kịch bản của bạn không có được biên soạn trên mọi yêu cầu
Khi làm việc với chuỗi và bạn cần phải kiểm tra xem chuỗi, hoặc là của một độ dài nhất định bạn sẽ dễ hiểu sẽ muốn sử dụng strlen () chức năng. Chức năng này là khá nhanh chóng kể từ khi hoạt động của nó không thực hiện bất kỳ tính toán nhưng chỉ trả lại chiều dài đã được biết đến của một chuỗi có sẵn trong cơ cấu zval (nội C struct được sử dụng để lưu trữ các biến trong PHP). Tuy nhiên vì strlen () là một chức năng nó vẫn còn hơi chậm vì các cuộc gọi chức năng yêu cầu các hoạt động như chữ thường & hashtable tra cứu tiếp theo là thực hiện chức năng nói. Trong một số trường hợp, bạn có thể cải thiện tốc độ của mã của bạn bằng cách sử dụng một thủ thuật isset ().
PHP:
if (strlen ($ foo)