Chạy: phiên bản gcc 4.2.1 (Apple Inc. xây dựng 5664)Thời gian biên dịch chậm với Boost + GCC + header được biên dịch trước
Tôi đã tạo dự án XCode táo với tiêu đề mặc định được biên dịch trước. Dường như nó rất chậm và một tệp chính nhỏ với chức năng chính không bao gồm mã nào mất 6 giây để biên dịch, sau khi tôi nâng cấp lên ổ SSD mới. Tôi đang ở trên một máy tính xách tay, nhưng tôi đã đặt chỗ nâng cấp lên một máy trạm sẽ làm giảm bớt vấn đề của tôi. Nếu tôi tắt tiêu đề được biên dịch trước thì tệp chính sẽ biên dịch trong một giây. Có vẻ như sử dụng một tiêu đề được biên dịch trước sẽ đặt một hình phạt trên tất cả các tệp. Sự chậm trễ này khiến tôi muốn tránh biên dịch và thử nghiệm với mã không tốt. Dưới đây là những gì tôi bao gồm trong tiêu đề được biên dịch trước của tôi:
#pragma once
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <fstream>
#include <functional>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <valarray>
#include <vector>
#include <boost/smart_ptr/scoped_ptr.hpp>
#include <boost/smart_ptr/scoped_array.hpp>
#include <boost/smart_ptr/shared_ptr.hpp>
#include <boost/smart_ptr/shared_array.hpp>
#include <boost/smart_ptr/make_shared.hpp>
#include <boost/smart_ptr/weak_ptr.hpp>
#include <boost/smart_ptr/intrusive_ptr.hpp>
#include <boost/regex.hpp>
#include <boost/thread.hpp>
#include <boost/bind/bind.hpp>
#include <boost/bind/apply.hpp>
#include <boost/bind/protect.hpp>
#include <boost/bind/make_adaptable.hpp>
#include <boost/asio.hpp>
//#include <boost/asio/ssl.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/random.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/time_zone_base.hpp>
#include <boost/circular_buffer.hpp>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
Tôi chưa bao gồm tinh thần, điều này thực sự làm cho thời gian biên dịch tăng lên.
Vì vậy, một "tệp chính nhỏ với một hàm chính không bao gồm không có mã" mất ít thời gian hơn nhiều để biên dịch hơn một dự án với tất cả các tính năng được liệt kê ở trên? Nên điều đó không được mong đợi? – jedwards
Ngoài ra, sự hiểu biết của tôi về các tiêu đề biên dịch sẵn là chúng chỉ có xu hướng tiết kiệm thời gian biên dịch nếu không chúng sẽ được biên dịch nhiều lần, thông qua 'include' từ nhiều nguồn. Đây không phải là trường hợp của bạn, vì vậy tôi sẽ tưởng tượng thời gian biên dịch của bạn bằng cách sử dụng các tiêu đề biên dịch sẵn sẽ tương tự như không có. Đó là, bạn sẽ không nhận ra nhiều lợi ích bằng cách sử dụng các tiêu đề được biên dịch trước. Bạn thực sự nên hạn chế sự bao gồm của bạn vào những gì bạn cần trên cơ sở nguồn cụ thể của tập tin. – jedwards
Và điều này có nghĩa là: "Sự chậm trễ này khiến tôi muốn tránh biên dịch và thử nghiệm mã không tốt". – jedwards