2008-11-09 50 views
6

Tối ưu hóa mã PHP thông qua đo điểm chuẩn thời gian chạy là thẳng về phía trước. Theo dõi thời gian bắt đầu $ và $ end qua microtime() xung quanh một khối mã - Tôi không tìm kiếm câu trả lời liên quan đến việc sử dụng microtime().Có cách nào để đo thời gian phân tích cú pháp trong PHP không?

Điều tôi muốn làm là đo thời gian cần PHP để chuẩn bị để chạy thời gian xây dựng mã - phân tích cú pháp/mã hóa-cây-mã. Lý do của tôi là trong khi thật dễ dàng để bao gồm() mọi lớp mà bạn có thể cần cho mọi trang mà bạn có trên trang web, chi phí CPU không thể là "miễn phí". Tôi muốn biết làm thế nào "đắt tiền" phân tích thời gian thực sự là.

Tôi giả định rằng bộ nhớ cache opcode như APC là không phải một phần của kịch bản.

Tôi có chính xác rằng việc đo thời gian phân tích cú pháp trong PHP là điều gì đó sẽ phải diễn ra trong mod_php không?

EDIT: Nếu có thể, có tính đến việc sử dụng $_SERVER['DOCUMENT_ROOT'] việc sử dụng mã sẽ hữu ích. Các giải pháp lệnh có thể mất một chút tinkering để làm điều này (nhưng vẫn là câu trả lời có giá trị).

Trả lời

7

Có. Có.

<?php return; rest of the code ?> 

hoặc

<?php whole code; $%^parse [email protected]! ?> 

và sau đó so sánh thời gian chạy tập lệnh trống

time php empty.php 

với thời gian cần thiết để chạy (hoặc thất bại) kịch bản thường xuyên với những bổ sung tôi đã đề cập ở trên :

time php test.php 

Tôi đã sử dụng phương pháp này trên các tập tin lớn và PHP5.3 trên Core2Duo 2.4Ghz có thể phân tích giữa 1,5 và 4,5MB mã PHP mỗi giây (nó phụ thuộc rất nhiều vào sự phức tạp của mã của khóa học).

1

Một phương pháp có thể là thời gian thực thi tập lệnh từ dòng lệnh.

Trong Linux ví dụ:

$ time php5 -r 'echo "Hello world";' 
Hello world 
real 0m1.565s 
user 0m0.036s 
sys  0m0.024s 

Điều đó giúp đỡ ở tất cả? Có lẽ rất hữu ích khi khám phá thời gian tương đối giữa các tập lệnh khác nhau, nhưng có thể không có dấu hiệu của thời gian được thực hiện qua mô-đun Apache

2

Để biết mức phân tích chi tiết mà bạn đang tìm kiếm, có vẻ như việc triển khai Xdebug (http://xdebug.org/) sẽ cung cấp cho bạn thông tin lớn nhất về việc cắt mã của bạn thành các đoạn được phân đoạn.

+0

Bạn có bất kỳ ví dụ cụ thể nào về cách thực hiện việc này không? – jschrab

+0

Tôi thấy rằng Zend nói tốt hơn tôi có thể - http://devzone.zend.com/article/2803-Giới thiệu-xdebug –

Các vấn đề liên quan