Tôi biết điều này là rất muộn cho bữa tiệc, nhưng thời gian thay đổi và câu trả lời vẫn ở xung quanh. C ++ 11 có những thay đổi khá lớn, nhiều trong số đó là để tăng hiệu suất của C ++ và thư viện chuẩn. Có vẻ như những người không sử dụng STL hoặc Boost, có xu hướng không theo kịp các tiêu chuẩn mới, khiến các giải pháp quay vòng tại nhà thiếu các cải tiến quan trọng, tất nhiên điều này không phải luôn luôn như vậy.
Tôi đã sử dụng STL cho mọi dự án từ giữa những năm 90 đến nay, ngoại trừ một thời gian ngắn tại EA. Tôi nghĩ rằng bên chống STL có một số lý do hợp lý để không sử dụng nó. Những thứ đó phần lớn đã biến mất. Phân bổ tùy chỉnh là một giải pháp, sử dụng dự trữ là một giải pháp khác và không vượt qua mọi thứ theo giá trị là một phần ba, nhưng những điều này khá đơn giản và bất kỳ lập trình viên nào cũng nên biết những điều này. Quan trọng hơn là việc sử dụng các thuật toán. Người viết trình biên dịch biết chính xác những gì một for_each () làm và có thể tối ưu hóa mã. Điều đó không thể xảy ra với một vòng lặp nhà. for_each () trên một đối tượng const thậm chí còn tốt hơn. Microsoft tối ưu hóa for_each theo nhiều cách bao gồm cả tuần tự hóa. Họ cũng có thư viện AMP cóallel_for_each (). Nếu bạn có cơ hội, hãy nói chuyện với các kỹ sư biên dịch về điều này. Trình biên dịch bảng điều khiển sẽ tối ưu hóa những gì được sử dụng, vì vậy nó ' sa một chút của một vấn đề gà và trứng. Microsoft đang rất nặng nề với C ++ 11 và XBox tiếp theo sẽ không khác. Tôi không biết gì về PS4, chúng tôi chưa có ai.
Cấp phát tùy chỉnh là một cách để xử lý vấn đề bộ nhớ, nhưng một tùy chọn khác (thường bị bỏ qua) là sử dụng lớp mới và xóa. Tăng hiệu suất rất lớn có thể có cách này.
Quan niệm rằng Boost và STL có quan điểm hạn hẹp trong việc giải quyết vấn đề là sự điên rồ thuần túy. Tôi choáng váng khi có bao nhiêu thứ trong STL và Boost có thể tùy chỉnh thông qua các đặc điểm và chính sách. Tìm trường hợp chuỗi độc lập so sánh làm ví dụ.
Về thời gian liên kết dài và phình mã, mẫu extern mới sẽ giúp với điều này. Nói chung tôi thấy thời gian biên dịch dài đến từ khớp nối thừa và lạm dụng pch.
Lý do thuyết phục nhất để sử dụng STL so với âm hộ là có hàng triệu người có thể giúp bạn với STL. Như mọi khi, không tối ưu hóa sớm và kiểm tra, thử nghiệm, kiểm tra.