Sử dụng các công cụ thích hợp cho công việc.
Nếu chương trình của bạn có thể đưa ra các ngoại lệ, đảm bảo mã của bạn là ngoại lệ. Sử dụng con trỏ thông minh, RAII và tránh xây dựng 2 pha là điểm khởi đầu tốt.
Nếu bạn có các tài liệu tham khảo theo chu kỳ không có ngữ nghĩa sở hữu rõ ràng, bạn có thể xem xét sử dụng thư viện bộ sưu tập rác hoặc tái cấu trúc thiết kế của bạn.
Các thư viện tốt sẽ cho phép bạn mã hóa khái niệm không phải là loại vì vậy nó không quan trọng trong hầu hết các trường hợp bạn đang sử dụng loại con trỏ nào ngoài các vấn đề quản lý tài nguyên.
Nếu bạn đang làm việc trong môi trường đa luồng, hãy đảm bảo bạn hiểu nếu đối tượng của bạn có khả năng được chia sẻ qua các luồng. Một trong những lý do chính để xem xét sử dụng boost :: shared_ptr hoặc std :: tr1 :: shared_ptr là vì nó sử dụng số tham chiếu an toàn cho chuỗi.
Nếu bạn lo lắng về việc phân bổ số lượng tham chiếu riêng biệt, có nhiều cách xung quanh vấn đề này. Sử dụng thư viện boost :: shared_ptr, bạn có thể phân bổ các bộ đếm tham chiếu hoặc sử dụng boost :: make_ Shared (tùy chọn của tôi) để phân bổ đối tượng và số tham chiếu trong một phân bổ duy nhất do đó làm giảm hầu hết các lỗi bộ nhớ cache mà mọi người có. Bạn có thể tránh được hiệu suất của việc cập nhật số tham chiếu trong mã quan trọng về hiệu suất bằng cách giữ một tham chiếu đến đối tượng ở mức cao nhất và chuyển xung quanh các tham chiếu trực tiếp đến đối tượng.
Nếu bạn cần quyền sở hữu chung nhưng không muốn trả chi phí đếm tham chiếu hoặc thu gom rác, hãy cân nhắc sử dụng các đối tượng không thay đổi hoặc bản sao trên thành ngữ ghi.
Hãy nhớ rằng chiến thắng hiệu suất lớn nhất của bạn sẽ ở mức kiến trúc, tiếp theo là cấp độ thuật toán và trong khi những lo ngại ở mức độ thấp này rất quan trọng, chúng chỉ nên được giải quyết sau khi bạn giải quyết các vấn đề chính. Nếu bạn đang xử lý các vấn đề về hiệu năng ở mức bộ nhớ cache thì bạn có cả đống vấn đề mà bạn cũng phải lưu ý như chia sẻ sai không liên quan gì đến con trỏ mỗi lần nói.
Nếu bạn đang sử dụng con trỏ thông minh chỉ để chia sẻ các tài nguyên như kết cấu hoặc mô hình, hãy xem xét một thư viện chuyên biệt hơn như Boost.Fly weight.
Khi tiêu chuẩn mới được áp dụng ngữ nghĩa di chuyển, tham chiếu giá trị và chuyển tiếp hoàn hảo sẽ giúp làm việc với các đối tượng và container đắt tiền dễ dàng và hiệu quả hơn nhiều. Cho đến lúc đó, đừng lưu trữ các con trỏ với ngữ nghĩa sao chép phá hủy, chẳng hạn như auto_ptr hoặc unique_ptr, trong Container (khái niệm tiêu chuẩn). Xem xét sử dụng thư viện Boost.Pulum Container hoặc lưu trữ các con trỏ thông minh sở hữu chung trong Container. Trong mã quan trọng về hiệu năng, bạn có thể xem xét việc tránh cả hai thứ này để ủng hộ các thùng chứa xâm nhập, chẳng hạn như những thứ trong Boost.Intrusive.
Nền tảng mục tiêu không thực sự ảnh hưởng đến quyết định của bạn quá nhiều. Các thiết bị nhúng, điện thoại thông minh, điện thoại câm, PC và bảng điều khiển đều có thể chạy mã tốt. Các yêu cầu của dự án như ngân sách bộ nhớ nghiêm ngặt hoặc không phân bổ động bao giờ / sau khi tải là những mối quan tâm hợp lệ hơn và sẽ ảnh hưởng đến các lựa chọn của bạn.