2010-03-11 73 views
9

Chúng tôi đang làm việc để giảm thời gian biên dịch trên Windows và do đó đang xem xét tất cả các tùy chọn. Tôi đã cố gắng để tìm trên Google cho một so sánh giữa thời gian biên dịch bằng cách sử dụng GCC (MinGW hoặc Cygwin) và trình biên dịch MSVC (CL) mà không có bất kỳ may mắn. Tất nhiên, việc so sánh sẽ không khó khăn, nhưng tôi muốn tránh tái phát minh bánh xe nếu tôi có thể.So sánh thời gian biên dịch giữa Windows GCC và trình biên dịch MSVC

Có ai biết so sánh như vậy không? Hoặc có lẽ ai đó có một số kinh nghiệm thực tế?

Input nhiều đánh giá cao :)

Trả lời

4

So sánh trình biên dịch là không nhỏ:

  • Nó có thể thay đổi từ xử lý để xử lý. GCC có thể tối ưu hóa tốt hơn cho i7 và MSVC cho Core 2 Duo hoặc ngược lại. Hiệu suất có thể bị ảnh hưởng bởi bộ nhớ cache, vv (Unroll vòng hoặc không unroll vòng, đó là câu hỏi;)).
  • Nó phụ thuộc rất nhiều vào cách viết mã. Một số thành ngữ (tương đương với nhau) có thể được ưa thích bởi một trình biên dịch.
  • Phụ thuộc vào cách sử dụng mã.
  • Tùy thuộc vào cờ. Ví dụ: gcc -O3 thường được tạo mã chậm hơn sau đó -O2 hoặc -Os.
  • Tùy thuộc vào giả thiết nào có thể được thực hiện về mã. Bạn có thể cho phép đặt bí danh nghiêm ngặt hoặc không (-fno-strict-aliasing/-fstrict-aliasing trong gcc). Bạn có cần đầy đủ IEEE 754 hoặc bạn có thể uốn cong quy tắc tính toán con trỏ nổi (-ffast-math).
  • Nó cũng phụ thuộc vào các phần mở rộng bộ xử lý cụ thể. Bạn có bật MMX/SSE hay không. Bạn có sử dụng nội tại hay không. Bạn có phụ thuộc mã đó tương thích với i386 hay không.
  • Phiên bản gcc nào? Phiên bản msvc nào?
  • Bạn có sử dụng bất kỳ phần mở rộng gcc/msvc nào không?
  • Bạn có sử dụng microbenchmarking hoặc macrobenchmarking không?

Và cuối cùng bạn nhận ra rằng kết quả là ít sau đó lỗi thống kê;)

Ngay cả khi ứng dụng duy nhất được sử dụng kết quả có thể không phân thắng bại (chức năng A thực hiện tốt hơn trong gcc nhưng B trong msvc).

PS. Tôi sẽ nói Cygwin sẽ chậm nhất vì nó có mức độ gián đoạn bổ sung giữa POSIX và WinAPI.

+0

Câu hỏi đặt ra là về thời gian biên dịch chứ không phải về hiệu suất của kết quả thực thi. –

+0

Gần như tất cả những điều trên cũng được áp dụng ngoại trừ có thể là cái cuối cùng để đo tốc độ biên dịch. –

+0

Bất kỳ lý do nào cho downvote? –

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