2010-10-27 60 views

Trả lời

6

Bên cạnh tiêu đề trước khi biên soạn, có số thứ khác mà có thể được làm chậm bạn xuống:

  • Virus kiểm tra phần mềm - có thể có một tác động khó chịu về xây dựng. Nếu bạn có trình kiểm tra vi-rút, hãy thử tắt nó đi và xem bạn sẽ nhận được loại cải tiến nào.
  • RAM thấp - Không đủ RAM sẽ khiến nhiều lần đọc đĩa hơn và làm chậm bạn xuống. cont ->
  • Ổ cứng chậm - Bạn phải ghi vào đĩa bất kể và ổ đĩa chậm, như ổ đĩa hiện có trong nhiều máy tính xách tay và hệ thống cấp thấp hơn, sẽ giết các bản dựng của bạn. Bạn có thể nhận được một ổ đĩa nhanh hơn, một mảng RAID hoặc SSD
  • (Các) bộ xử lý chậm ... tất nhiên.
  • Không chắc chắn, nhưng: Kiểm tra xem liệu dự án của bạn có tham chiếu đến chia sẻ mạng hay không. Có để kéo các tập tin trên mạng với mỗi xây dựng sẽ làm chậm lớn.

EDIT ít nhiều suy nghĩ:

  • Nếu giải pháp của bạn có chứa một số lượng lớn các dự án bạn có thể xem xét việc tạo khác "Sub" giải pháp có chứa chỉ các dự án mà bạn đang tích cực làm việc trên. Khả năng này phụ thuộc vào mối liên hệ giữa các dự án của bạn.
  • Các bản dựng dự án có thể có các lệnh sự kiện trước và sau khi tạo liên kết với chúng. Kiểm tra các thuộc tính của dự án của bạn để xem liệu có bất kỳ sự kiện xây dựng tốn kém nào được chỉ định hay không.
+2

Nếu bạn không muốn tắt hoàn toàn kiểm tra vi rút, nhiều máy quét cho phép bạn chỉ định ngoại lệ. Thêm '* .c, * .cpp, * .h * .hpp, * .obj, * .lib, * .pch, * .ncb' vào danh sách ngoại lệ sẽ giúp bạn đạt được 95% tốc độ tăng tốc và vẫn nắm bắt được tất cả thông tin chung virus. – MSalters

+1

Chia sẻ mạng là một nút cổ chai lớn. Thời gian xây dựng của tôi đã tăng từ ~ 1 phút (đối với một dự án giới thiệu 1 trang mã nhỏ) đến ~ 1 giây khi tôi chuyển từ chia sẻ mạng sang SSD cục bộ của mình. –

2

Các tiêu đề được biên dịch sẵn có thể hữu ích nếu bạn bao gồm tiêu đề phức tạp (STL, Boost chẳng hạn) trực tiếp trong nhiều tệp.

Đảm bảo rằng bản dựng của bạn không vô tình truy cập vào mạng hoặc cố ý.

4

Bạn có thể tạo pre-compiled header các tệp thường không thay đổi thường xuyên. Điều này có thể làm tăng đáng kể thời gian biên dịch của bạn.

+0

Tôi chưa bao giờ nhận thấy điều này khi tôi bắt đầu sử dụng Visual Studio. Tôi chuyển từ Code :: Blocks mà dường như làm điều đó tự động cho bạn. –

2

Nếu bạn có CPU đa lõi, hãy sử dụng /MP compiler option.

Edit: What techniques can be used to speed up C++ compilation times?

+0

tôi sử dụng g + + vì vậy tôi không chắc chắn nhưng theo như tôi biết vs2005 cũng hỗ trợ tùy chọn này nhưng nó không có giấy tờ. – bmeric

+2

Tôi tin rằng VS2005 DOES hỗ trợ/MP nhưng không có giấy tờ. – Puppy

+0

VS2005 sẽ thực hiện các biên dịch đồng thời trên các máy MP, trong các ràng buộc của các phụ thuộc dự án. –

0

Nếu bạn có rất nhiều các dự án trong các giải pháp loại bỏ một số trong số họ. Nếu chúng được tham chiếu như các dự án bạn có thể tham chiếu đầu ra nhị phân thay vào đó (sử dụng nút duyệt trong hộp thoại thêm tham chiếu). Điều này loại bỏ rất nhiều kiểm tra sự phụ thuộc trong giải pháp. Nó không lý tưởng nhưng nó làm tăng tốc độ.

3
  • Unity builds.
  • Precompiled headers.
  • Windows 7 xây dựng nhanh hơn rất nhiều so với Windows XP (nếu điều đó có liên quan đến bạn).
  • Tắt máy quét chống vi-rút.
  • Giảm thiểu các phụ thuộc (ví dụ: #include từ các tệp tiêu đề).
  • Giảm thiểu số lượng mã mẫu.
3

Ở cấp mã, bạn nên giảm thiểu số lượng tiêu đề được bao gồm bởi các tiêu đề khác. Việc tải và đọc tệp lặp lại có thể có tác động lớn. Thay vào đó, hãy chuyển tiếp khai báo mọi thứ bất cứ khi nào có thể. Ví dụ:

#include <iosfwd> 
#include <string> 
#include "M.h" 
#include "R2.h" 
#include "A2.h" 

class M2; 
class A; 
class R; 
template<class C> class T; 

class X{ 
    M member; // definition of M is required 
    M2 *member2; // forward declaration is sufficient for pointers & references 
public: 
    // forward declaration of argument type A is sufficient 
    X(const A &arg); 

    // definition required for most std templates and specializations 
    X(const std::string &arg); 

    // forward declaration of your own templates is usually okay... 
    void f(T<int> t); 

    // unless you're defining a new one. The complete definition 
    // must be present in the header 
    template<class Z> 
    void whatever(){ 
    // blah blah 
    } 

    R f(); // forward declaration of return type R is sufficient 

    // definitions of instantiated types R2 and A2 are required 
    R2 g(A2 arg){ 
    return arg.h(); 
    } 

    // ostream is forward-declared in iosfwd 
    friend std::ostream &operator << (std::ostream &o, const X &x); 
}; 

Người dùng của lớp này sẽ phải #include bất cứ tập tin cung cấp các định nghĩa lớp nếu họ thực sự gọi bất kỳ của X(const A&), f(t<int>), f(), hoặc operator <<.

Mẫu gần như chắc chắn sẽ thêm vào chi phí bao gồm. Điều này thường có giá trị quyền lực của họ, theo ý kiến ​​của tôi. Khi bạn tạo mẫu của riêng mình, định nghĩa đầy đủ phải nằm trong tệp tiêu đề; nó không thể đi trong một tập tin cpp để biên dịch riêng biệt. Các mẫu chuẩn không thể chuyển tiếp được khai báo, vì việc triển khai được phép cung cấp các tham số mẫu bổ sung (với các đối số mặc định) và các khai báo về các mẫu phải liệt kê tất cả các tham số mẫu. Tiêu đề iosfwd forward-tuyên bố tất cả các mẫu và lớp luồng tiêu chuẩn, trong số những thứ khác. Các mẫu của riêng bạn có thể được chuyển tiếp tuyên bố miễn là bạn không khởi tạo bất kỳ chuyên môn nào.

Các tiêu đề được biên dịch trước cũng có thể hữu ích, nhưng phần lớn trình biên dịch giới hạn số lượng bạn có thể đưa vào tệp nguồn (Visual Studio giới hạn bạn), vì vậy chúng không phải là thuốc chữa bách bệnh.

0

Giải pháp mà chúng tôi đã sử dụng là IncrediBuild. Chỉ cần ném thêm phần cứng vào vấn đề. Ngoài tất cả các máy phát triển (khá mạnh mẽ), chúng tôi đã có một số máy chủ 4 lõi không làm gì ngoài việc biên dịch.

0

Thay đổi Nền tảng giải pháp của bạn trên tùy chọn "Bất kỳ CPU" nào được đưa ra trên đầu thị giác trực quan, sau đó tốc độ xây dựng chương trình của bạn chắc chắn sẽ tăng lên.

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