Nếu ứng dụng của bạn đang truyền đi khoảng 700 byte tin nhắn XML có thể chứa trong 65 byte thông báo giao thức Google hoặc 85 byte tin nhắn ASN.1 thì có lẽ nó sẽ không quan trọng. Nhưng nếu nó được xử lý một triệu somethings một giây sau đó tôi sẽ không bỏ qua chi phí của việc thêm 2 đầy đủ đọc sửa đổi viết (RMW) chu kỳ để đi qua của một con trỏ.
Đọc sửa đổi đầy đủ ghi là theo thứ tự 50 ns vì vậy hai là 100 ns. Chi phí này là chi phí của một khóa-inc và một khóa-dec - giống như 2 CAS. Đây là một nửa của một cửa sổ dự trữ phần quan trọng và phát hành.Điều này được so sánh với một chu kỳ máy đơn lẻ (400 PICO giây trên máy 2.5GHZ)
Và điều này thậm chí không bao gồm các chi phí khác để làm mất hiệu lực dòng bộ nhớ cache thực sự chứa số, ảnh hưởng của khóa BUS trên các bộ xử lý khác, v.v.
Việc truyền con trỏ thông minh bằng tham chiếu const gần như luôn được ưa thích. Nếu callee không tạo ra một con trỏ chia sẻ mới khi anh ta muốn đảm bảo hoặc kiểm soát toàn bộ vòng đời của con trỏ thì đó là lỗi trong callee. Để đi tham khảo an toàn, các con trỏ thông minh xung quanh theo giá trị chỉ là yêu cầu các lần truy cập hiệu suất.
Việc sử dụng con trỏ tham chiếu giúp đơn giản hóa tuổi thọ không nghi ngờ, nhưng để chuyển con trỏ được chia sẻ theo giá trị để cố gắng bảo vệ chống lại các lỗi trong callee là vô nghĩa và hoàn toàn vô nghĩa.
Sử dụng quá nhiều tính tham chiếu có thể theo thứ tự ngắn sẽ biến một chương trình mảnh dẻ có thể xử lý các thông báo 1mm mỗi giây (mps) thành một phần chất béo xử lý 150k mps trên cùng một phần cứng. Đột nhiên bạn cần một nửa số máy chủ và $ 10000/năm tiền điện.
Bạn luôn tốt hơn nếu bạn có thể quản lý thời gian tồn tại của đối tượng mà không cần tính tham chiếu.
Một ví dụ về cải tiến đơn giản là nói nếu bạn định hâm mộ đối tượng và bạn biết bề rộng của quạt (n) tăng theo n thay vì tăng từng phần riêng lẻ.
BTW khi cpu nhìn thấy tiền tố khóa, nó thực sự nói "Ồ không có điều này sẽ làm tổn thương".
Tất cả những gì được nói, tôi đồng ý với mọi người rằng bạn nên xác minh điểm nóng.
Heh. Không có câu trả lời ở đây, nhưng tôi chỉ thích cách tiêu đề đã được phrased. Tôi đang hình dung các CPU vui vẻ thực hiện các hướng dẫn khi đột nhiên nó nhìn thấy một hướng dẫn chia sẻ con trỏ vào mặt sau của đường ống. "Ồ không, chuyện này sẽ huuuuurt ...... OW!" –
Điều gì khiến bạn cho rằng vấn đề là con trỏ được chia sẻ? –
Có người nói rằng họ lãng phí thời gian cpu, đó là: P – Guest