tăng và các thư viện chuẩn C++ được sử dụng để sản xuất triển khai sản xuất cực kỳ nhanh chóng. Tất nhiên, người ta có thể cải thiện khi triển khai trong các trường hợp cụ thể - điều này tương tự với việc viết trình phân bổ của riêng bạn khi bạn biết cách thực thi khác với các trình phân bổ mục đích chung và cách tối ưu hóa cho việc sử dụng đó. Vì vậy, một trong những khóa học có thể phân tích vấn đề và sản xuất một thực hiện tối ưu hóa đó là nhanh hơn so với việc thực hiện mục đích chung (hoặc tăng).
Tất nhiên, bất kỳ thư viện nào cũng có thể bị lạm dụng, điều này có thể dẫn đến việc thực thi bị xâm phạm. Ngắn gọn của nó là tăng cường (một bộ sưu tập lớn các thư viện) triển khai là một điểm khởi đầu tuyệt vời cho việc triển khai nhanh. Nếu bạn cần nó nhanh hơn tăng cường, hãy xác định vấn đề và cải thiện nó.
Nhiều nhà phát triển C++ quan tâm đến hiệu suất; nói chung, nhiều hơn các ngôn ngữ khác. tăng cường nói chung cũng được xem xét, đánh giá ngang hàng, và việc triển khai được sử dụng để kiểm tra và hình thành cơ sở cho các tính năng thư viện chuẩn.
Khá điều ngược lại.
Tăng cường là không về dây an toàn.
Boost là về mức cao thành phần phần mềm, với một cao mức trừu tượng này tránh sự thông thường 'thư viện lock-in' nhìn thấy với các khuôn khổ khác/thư viện .
Ví dụ: thư viện Boost Graph của bạn không không yêu cầu bạn chuyển đổi cấu trúc dữ liệu: bạn có thể sử dụng/điều chỉnh bất kỳ cấu trúc dữ liệu nào hoạt động tốt cho ứng dụng của bạn. Trong trường hợp xấu nhất, bạn có thể phải viết một đặc điểm lớp để giúp Tăng cường với việc giải thích; Đó chính xác là đặc điểm này (chung với thư viện mẫu hiện đại) khiến Boost hoạt động như không có gì khác trong thực tế: sẽ không có nhiều không phù hợp với thư viện trở kháng. Điều này phù hợp trực tiếp với các khái niệm mới của C++ 11 xung quanh luồng và di chuyển ngữ nghĩa: ngăn chặn ngay cả các trường hợp sao chép dữ liệu cơ bản nhất.
Ngoài ra, tất cả các thư viện này đều tôn trọng triển khai cấp phát của riêng bạn, cho phép hiệu suất quản lý bộ nhớ vượt trội. Bạn có thể căn chỉnh vectơ int 128 bit trong C# - nhưng bạn sẽ phải nhảy qua nhiều vòng lặp và, có không có cách nào bạn có thể làm cho nó hoạt động với API của khung công tác.
Trong C++, bạn chỉ trả tiền cho những gì bạn sử dụng và Boost hoàn toàn theo tinh thần đó.
Mmmm Tôi nghĩ rằng tôi chưa hoàn toàn nhấn mạnh đến mức đủ, nhưng bây giờ tôi đã xong.
Hãy để tôi gần bằng cách nhìn vào nó từ phía bên kia: trong C# thì khó viết mã trình diễn nhiều hơn, bởi vì khó có thể nhìn thấy những gì đang diễn ra đằng sau hậu trường.
Khi bạn thả đằng sau hậu trường (chế độ không an toàn, IL đang), bạn sẽ cho là ít an toàn hơn so với C++, bởi vì trong C++ có một chính sách minh bạch về những gì xảy ra ở đâu và như thế nào. Trong C# bạn thậm chí không thể tin tưởng một int*
mà bạn đã có một dòng trước (vì Garbage Collector có thể đã di chuyển pho mát của bạn); Không có gì cho biết trình biên dịch và động cơ JIT nào sẽ tạo mã chung tốt đẹp của bạn .
Tóm lại: bạn có thể viết mã không đúng ở bất cứ đâu, nhưng Boost không thể đổ lỗi. STL chỉ có thể được đổ lỗi cho hiệu suất thô điên rồ .
poco, Qt, MFC, WTL, không có điều gì ....
Mono SIMD
Bao gồm rất nhiều lĩnh vực mà gần gũi với thảm hại và vi phạm 'Nguyên tắc Of Least Surprise' trong một cách lớn (example
coming
when blog back online)
Đó std::copy
sẽ tĩnh dịch trong việc thực hiện tốt nhất dựa trên SSE4, MOVSW hoặc chỉ đơn giản memcpy mà tiền có thể mua, và bạn thậm chí không cần phải viết một lá thư khác nhau từ việc sao chép một istream
đến một set
, để nói.
Ai nói rằng không biết những gì ông đang nói về. –
Không đồng ý rằng STL hoặc BOOST làm cho bạn chậm hơn. Xem: http://stackoverflow.com/questions/3664272/stdvector-is-so-much-slower-than-plain-arrays/3664349#3664349 –
Đừng quên rằng trong quảng cáo việc làm, có thể họ đang tìm kiếm nhiều hơn cho mọi người người viết * đúng * mã đầu tiên, với hiệu suất là mối quan tâm thứ cấp (mặc dù vẫn quan trọng). –