2012-05-03 28 views
7

Tôi đang tìm một trình biên dịch thấp, độc lập với mã C++.Tìm kiếm một trình biên tập C++ tác động thấp

Khi tôi nói tác động thấp, tôi đề cập đến điều gì đó ít xâm phạm hơn valgrind. Tôi dự định sử dụng nó trong môi trường nhúng dựa trên MIPS (do đó là độc lập với os) và thử phiên bản valgrind đã chuyển đổi và nó hoàn toàn thay đổi đặc tính hiệu suất (quá nhiều nguyên tắc Heisenberg tại nơi làm việc). Chúng ta biết tốc độ bus bộ nhớ là một nút cổ chai mà rất có thể giải thích lý do tại sao valgrind lại xâm phạm đến vậy.

Tôi đã tạo một loại nhà trồng profiler dựa trên các điểm kiểm tra cho phép tôi đo một số phần nhất định của mã. Về cơ bản tôi phải sửa đổi mã (và biên dịch lại) để đặt các trạm kiểm soát ở các vị trí chiến lược trong mã. Sau đó, khi được thực hiện, nó lưu trữ số lần mỗi điểm kiểm tra được nhấn và thời gian kể từ khi trạm kiểm soát cuối cùng bị trúng. Sau đó, sau khi chạy nó, tôi có thể đổ các điểm kiểm tra và cho mỗi điểm tính toán: số lần truy cập, thời gian tối đa, thời gian tối thiểu, thời gian trung bình, v.v.

Profiler này (tôi gọi nó là LowImpactProfiler) hoạt động ok, nhưng tôi tự hỏi liệu có cái gì tốt hơn ngoài kia không.

Tôi đã coi oProfile, là một trình thu thập mẫu, nhưng vì Im không chạy Linux, tôi nghĩ nó sẽ thực sự dificult để thực hiện.

+1

Nếu mục tiêu là tìm hiểu nội dung nào trong mã đang gây chậm đi và có thể được cải thiện để có hiệu suất tốt hơn * [bạn có thể dùng thử] (http://stackoverflow.com/questions/375913/what-can -i-use-to-profile-c-code-in-linux/378024 # 378024). * –

+0

@Brady: * Heisenburger *? Không biết về điều này! –

+0

@Matthieu: Chưa bao giờ nghe nói về điều đó? Đó là một hamburger lượng tử. –

Trả lời

5

Tôi đã sử dụng Shiny cho tiểu sử trên các thiết bị nhúng rất hạn chế với thành công lớn. Từ mô tả của bạn, nó có một cách tiếp cận tương tự với LowImpactProfiler của bạn.

+0

Tôi sẽ tải xuống tuần này và xem, Gracias desde Madrid! – Brady

+0

Tôi đã xem xét mã Shiny và tôi thích nó cho đến nay, nó có vẻ là một giải pháp tốt hơn so với những gì tôi đang có. Cảm ơn! – Brady

+0

Có vẻ đầy hứa hẹn, nhưng tôi nghi ngờ rằng điều này sẽ hoạt động trên các thiết bị nhúng điện rất thấp. – Alex

1

Nếu bạn đang sử dụng Windows, bạn có thể thử profiler tôi, mô tả ở đây http://ravenspoint.wordpress.com/2010/06/16/timing/

Nghe có vẻ như nó có thể được dễ dàng hơn để sử dụng hơn của bạn, nhưng nó không phải là hệ điều hành độc lập. Nó sử dụng các lời gọi tới QueryPerformanceCounter(), đây là một API cửa sổ. Nó là mã nguồn mở, do đó, nó có thể là đáng giá để chuyển nó vào hệ điều hành của bạn, sử dụng bất kỳ bộ đếm thời gian hiệu suất cao có sẵn ở đó.

+0

Cảm ơn, nhưng chúng tôi sẽ không sử dụng các cửa sổ, một ứng dụng viễn thông của nó và nếu bất cứ điều gì, nó có thể một ngày nào đó sẽ được chuyển đến một nền tảng unix. Tôi sẽ xem xét nhé. – Brady

+0

+1, tôi thích API mà ứng dụng này sử dụng, * rất * tương tự với các trạm kiểm soát của tôi. Tôi sẽ xem xét mã và xem về porting/sáp nhập nó với tôi. Tôi sẽ chuẩn bị của tôi và đặt nó trên github vào tuần tới để bạn có thể nhìn vào. Tôi cũng có các điểm kiểm tra phạm vi, hoặc có thể thiết lập các điểm checckpoints riêng lẻ mà không cần phải nằm trong phạm vi. Khi tôi gửi mã, tôi sẽ gửi một thông điệp ở đây và/hoặc gửi cho bạn một thông điệp trên trang web của bạn. Cảm ơn! – Brady

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