Chi phí của con trỏ thông minh so với con trỏ bình thường trong C ++ 11 là bao nhiêu? Nói cách khác, mã của tôi sẽ chậm hơn nếu tôi sử dụng con trỏ thông minh, và nếu có, chậm hơn bao nhiêu?
Cụ thể, tôi đang hỏi về C ++ 11 std::shared_ptr
và std::unique_ptr
.
Rõ ràng, thứ được đẩy xuống ngăn xếp sẽ lớn hơn (ít nhất là tôi nghĩ vậy), bởi vì một con trỏ thông minh cũng cần lưu trữ trạng thái bên trong của nó (số lượng tham chiếu, v.v.), câu hỏi thực sự là, điều này sẽ là bao nhiêu ảnh hưởng đến hiệu suất của tôi, nếu có?
Ví dụ: tôi trả về một con trỏ thông minh từ một hàm thay vì một con trỏ bình thường:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Hoặc, ví dụ: khi một trong các hàm của tôi chấp nhận một con trỏ thông minh làm tham số thay vì một con trỏ bình thường:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
hoặc std::shared_ptr
?