2012-08-26 28 views

Trả lời

166

Sampling có nghĩa là lấy nhiều bãi chứa chuỗi và phân tích dấu vết ngăn xếp. Điều này thường nhanh hơn, không yêu cầu thay đổi thời gian chạy trong mã byte của bạn (có thể phá vỡ nó), nhưng cũng kém chính xác hơn.

Profiling có nghĩa là instrumenting các lớp và phương pháp của bạn, để chúng "báo cáo" bất cứ khi nào chúng chạy. Điều này là chính xác hơn, vì nó đếm mọi lời gọi của phương pháp được thiết kế, không chỉ những người bị bắt khi bãi chứa được thực hiện. Tuy nhiên thiết bị đo đạc có nghĩa là bytecode của các lớp học của bạn được thay đổi, và điều này có thể phá vỡ chương trình của bạn. Trên thực tế, vì lý do đó, việc sử dụng lược tả trên các máy chủ ứng dụng lớn (như JBoss hoặc WebLogic) thường khiến mọi thứ chết hoặc treo.

+2

Điều đó có nghĩa là việc lược tả chính xác hơn là lấy mẫu, nhưng sẽ cần nhiều tài nguyên hơn? – Parag

+0

Có, tôi đã cập nhật câu trả lời. – npe

+6

Tôi nhận thấy rằng Lấy mẫu quá chính xác mỗi khi tôi sử dụng nó để xác định các phương pháp hoạt động kém. Cá nhân tôi không bao giờ sử dụng hồ sơ. – Marquez