2009-03-24 47 views
5

Tôi đã luôn tin rằng các bản dựng Debug chậm hơn so với bản dựng Bản phát hành vì trình biên dịch cần phải tạo thêm thông tin trình gỡ rối. Gần đây tôi đã ngạc nhiên khi nghe một trong những đồng nghiệp của tôi nói rằng bản phát hành bản phát hành thường mất nhiều thời gian hơn. (Tôi tin rằng nó chỉ là do gia tăng liên kết/biên dịch).Phát hành vs Gỡ lỗi Xây dựng Times

Nói chung, cái nào trong hai cái này nhanh hơn?

Trả lời

13

Vâng, có một số biến có thể ảnh hưởng đến mọi thứ. Dưới đây là một số lý do khiến Debug có thể nhanh hơn:

  • Thường thì chế độ gỡ lỗi sẽ tối ưu hóa ít hơn, vì điều này có thể làm rối loạn ánh xạ giữa hướng dẫn và dòng mã. Vì vậy, trình biên dịch đang làm ít công việc hơn.
  • Ngay cả khi một bản dựng gỡ lỗi đầy đủ chậm hơn, các bản dựng gỡ lỗi xảy ra thường xuyên hơn nhiều và thường có thể tận dụng các bản dựng tăng thêm nhiều hơn Bản dựng bản phát hành có thể. Vì vậy, khá thường xuyên, một bản dựng Debug không phải làm nhiều công việc như một bản xây dựng bản phát hành.
0

Chỉ cần đoán nhưng tôi giả định rằng bản phát hành bản phát hành sẽ mất nhiều thời gian hơn trong hầu hết các trường hợp do tối ưu hóa.

0

Gỡ lỗi xây dựng thường nhanh hơn vì không có tối ưu hóa được thực hiện (rất phổ biến trong bản phát hành bản phát hành).

Bạn có thể chọn không tạo các biểu tượng gỡ lỗi với tệp thực thi của mình và không tối ưu hóa quá, nhưng điều đó sẽ rất lạ đối với bản dựng bản phát hành. Mặc dù nó sẽ xây dựng nhanh hơn tôi nghĩ.

Sự khác biệt chính giữa Debug và phát hành được mà gỡ lỗi là có nghĩa là để gỡ lỗi (do đó bao gồm những biểu tượng gỡ lỗi) và phát hành có nghĩa là để chạy nhanh hơn, vì vậy bạn sử dụng mạnh mẽ tối ưu hóa

1

Nhìn chung, tôi mong đợi rằng một xây dựng gỡ lỗi sẽ nhanh hơn để xây dựng, nhưng chậm hơn để chạy và bản phát hành sẽ mất nhiều thời gian hơn để xây dựng, nhưng kết quả cuối cùng sẽ chạy nhanh hơn.

Điều này là do buid phát hành có thể có tối ưu hóa tích cực hơn và chúng có thể ảnh hưởng đến khả năng gỡ lỗi. Ngoài ra, một số tối ưu hóa quy mô lớn hơn mất nhiều thời gian. Thời gian để chèn thông tin gỡ lỗi trong các tệp đối tượng đủ nhỏ để có thể bỏ qua, có thể mất ít thời gian hơn việc đọc mã nguồn tắt đĩa ngay từ đầu.

0

Lý do chính phát hành bản dựng sẽ nhanh hơn là trình biên dịch thực hiện rất nhiều tối ưu hóa trên chúng. Ví dụ, nó có thể bỏ vòng lặp, loại bỏ các biến không cần thiết, và các hàm nội tuyến. Tối ưu hóa không phải là một nhiệm vụ tầm thường và mất rất nhiều sức mạnh tính toán, do đó làm chậm quá trình xây dựng.

Hầu hết các trình biên dịch sẽ cho phép bạn tắt tối ưu hóa trên bản phát hành bản phát hành. Thử cái này. Thời gian xây dựng của bạn sẽ giảm. Bạn cũng có thể bật tối ưu hóa trên các bản dựng lỗi và xem thời gian xây dựng của bạn tăng lên.

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