Sự cân bằng chuyển động và không chuyển động là một sự phức tạp. Tôi không biết về bất kỳ nghiên cứu cụ thể nào về khía cạnh mà bạn đề cập - thực ra, tôi không chắc tôi hiểu nó hoàn toàn: GC chính xác luôn cần biết tất cả các con trỏ ở đâu, vì vậy có lẽ bạn đang nói về bảo thủ GC không di chuyển? GC bảo thủ theo ý kiến của tôi là một lựa chọn tồi nếu bạn có đủ quyền kiểm soát đường dẫn biên dịch để có thể thực hiện GC chính xác.
Các khía cạnh khác ảnh hưởng đến hiệu suất của việc di chuyển so với phi di chuyển GC là: tốc độ
Phân bổ. GC không di chuyển có thể phải phân bổ từ một danh sách miễn phí, trong khi GC coying có thể sử dụng phân bổ con trỏ bump. Đề án hỗn hợp như Immix cố gắng đánh cuộc tốt hơn giữa hai phương án.
Hành vi cục bộ và bộ nhớ cache. Có rất nhiều nghiên cứu về điều này cho cả GC di chuyển và không chuyển động; xem GC Bibliography. Nói chung, tính năng nén là tốt cho cache, mặc dù sao chép GC thường là chiều rộng đầu tiên, là một lựa chọn tồi (các mẫu truy cập có chiều sâu) vì vậy có một loạt nghiên cứu trong khu vực này đang cố gắng sắp xếp lại các đối tượng để phù hợp với mẫu truy cập .
Ý kiến cá nhân của riêng tôi là hỗ trợ phân bổ nhanh chóng, bạn cần có một bộ sưu tập sao chép và phân phối con trỏ. Nếu bạn làm bất cứ điều gì khác, phân bổ trở nên đắt hơn mà xiên rất nhiều thứ: tối ưu hóa để giảm phân bổ trở nên quan trọng hơn, vì vậy bạn sẽ phải nỗ lực chi tiêu và làm cho mọi thứ trở nên phức tạp hơn. Tôi muốn phân bổ thực sự thực sự rẻ và sau đó không phải lo lắng về nó.
Nguồn
2010-10-15 11:25:29
cũng thử tại http://cstheory.stackexchange.com/ – oluies
Họ có quan tâm đến các phép đo hiệu suất không? –