2010-11-01 25 views
6

Tôi có thể làm điều đó? ví dụ: nếu tôi muốn thử nghiệm nếu str_replace() nhanh hơn preg_replace()?Tính toán thời gian cần thiết để chạy một chức năng nhất định

+0

bản sao có thể có của [Tham chiếu hiệu suất/điểm chuẩn của PHP cho mỗi chức năng (hoặc mỗi tác vụ) tồn tại?] (Http://stackoverflow.com/questions/2530610/does-a-php-per-function-hoặc –

+0

Xin lỗi, bỏ qua các bản sao, tôi nghĩ rằng các dịch vụ điểm chuẩn cung cấp mã nguồn họ sử dụng, nhưng họ không. –

+1

Bạn muốn có một hồ sơ như Zend_Debugger hoặc XDebug cho điều đó. Xem http://stackoverflow.com/search?q=profile+php+script – Gordon

Trả lời

13

Bạn có thể chạy cùng một dòng 10.000 lần (hoặc nhiều hơn) trong kịch bản của bạn, và sử dụng microtime(true) nói với thời gian nó mất:

microtime()

+1

+1 Đây là phương pháp chuẩn. Điều quan trọng là phải làm điều đó một số lần lớn (tức là trong vòng lặp) để (a) bạn có được một sự khác biệt có thể đo được, và (b) để bạn có thể lọc ra các chênh lệch về tốc độ giữa lần chạy này và lần khác. – Spudley

+0

cảm ơn! có vẻ như hầu như không có sự khác biệt giữa 2 chức năng tôi đã đề cập :) str_replace dường như chỉ nhanh hơn đôi chút – Alex

+0

Tôi không chắc chắn lắm, nhưng thông dịch viên có trình tối ưu hóa, có thể thấy rằng vòng lặp của bạn có thể được tối ưu hóa, vì không có biến thay đổi trong vòng lặp lặp lại. Vì vậy, cách tốt hơn là sử dụng mã-profilers như XDebug – seriyPS

25

Cách dễ dàng:

$time = microtime(true); // time in Microseconds 

// Your code here 

echo (microtime(true) - $time) . ' elapsed'; 

Cách cứng (er): Sử dụng trình thu thập mã để xem chính xác thời gian mà các phương pháp của bạn sẽ thực hiện.

6

Tôi tìm thấy câu trả lời này bởi 'bisko' trong chuỗi this.

$ start = microtime (true);

cho (...) { .... }

$ cuối = microtime (true);

echo ($ end - $ start). ' giây ';

Vòng lặp for có thể được thay thế bằng bất kỳ thứ gì bạn muốn.

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