Tôi tin rằng theo thiết kế của những người triển khai GC, bạn không thể tăng tốc độ vô hiệu hóa GC. Tôi chắc rằng họ muốn bạn lo lắng mình với làm thế nào / khi GC chạy - điều trị nó như phổ biến này Being bảo vệ và trông chừng và ra cho bạn ... (cúi đầu xuống, nâng bàn tay lên trời) .. .
Cá nhân, tôi thường đặt các biến thành null một cách rõ ràng khi tôi hoàn thành chúng như một dạng tài liệu tự. Tôi không khai báo, sử dụng, sau đó đặt thành null sau - Tôi null ngay sau khi chúng không còn cần thiết nữa. Tôi đang nói một cách dứt khoát, "Tôi chính thức xong việc với bạn ... biến mất ..."
Là vô hiệu hóa cần thiết trong một ngôn ngữ GC? Không. Nó có hữu ích cho GC không? Có thể có, có thể không, không biết chắc chắn, bằng thiết kế tôi thực sự không thể kiểm soát nó, và bất kể câu trả lời ngày nay với phiên bản này hay điều đó, việc triển khai GC trong tương lai có thể thay đổi câu trả lời ngoài tầm kiểm soát của tôi. Ngoài ra, nếu / khi nulling được tối ưu hóa, nó sẽ ít hơn một nhận xét ưa thích nếu bạn muốn.
Tôi nghĩ rằng nếu nó làm cho ý định của tôi rõ ràng hơn với kẻ ngốc nghèo tiếp theo theo bước chân của tôi, và nếu đôi khi nó "có thể" có khả năng giúp đỡ GC, thì nó đáng để tôi làm. Chủ yếu là nó làm cho tôi cảm thấy gọn gàng và rõ ràng, và Mongo thích cảm thấy gọn gàng và rõ ràng. :)
Tôi nhìn nó như thế này: Các ngôn ngữ lập trình tồn tại để cho phép mọi người cho người khác biết ý định và trình biên dịch yêu cầu công việc phải làm - trình biên dịch chuyển đổi yêu cầu đó sang ngôn ngữ khác (đôi khi là một số) cho CPU - (các) CPU có thể cung cấp cho bạn một ngôn ngữ mà bạn đã sử dụng, cài đặt tab, nhận xét, dấu cách điệu, tên biến, v.v. - CPU là tất cả về luồng bit cho nó biết đăng ký và opcodes và vị trí bộ nhớ để xoay vòng. Nhiều thứ được viết bằng mã không chuyển đổi thành thứ mà CPU tiêu thụ theo trình tự chúng tôi đã chỉ định. C, C ++, C #, Lisp, Babel, lắp ráp của chúng tôi hoặc bất cứ điều gì là lý thuyết hơn là thực tế, được viết như một tuyên bố của công việc. Những gì bạn thấy không phải là những gì bạn nhận được, vâng, ngay cả trong ngôn ngữ trình biên dịch.
Tôi hiểu suy nghĩ của "những thứ không cần thiết" (như dòng trống) "không có gì ngoài tiếng ồn và làm lộn xộn mã." Đó là tôi sớm hơn trong sự nghiệp của tôi; Tôi hoàn toàn hiểu điều đó. Tại thời điểm này, tôi nghiêng về phía mà làm cho mã rõ ràng hơn. Không giống như tôi thêm 50 dòng "tiếng ồn" vào các chương trình của mình - đó là một vài dòng ở đây hoặc ở đó.
Có ngoại lệ cho bất kỳ quy tắc. Trong các trường hợp có bộ nhớ biến động, bộ nhớ tĩnh, điều kiện cuộc đua, singletons, sử dụng dữ liệu "cũ" và tất cả các loại mục nát đó, điều đó khác nhau: bạn CẦN quản lý bộ nhớ của riêng mình, khóa và vô hiệu hóa như apropos vì bộ nhớ không phải là một phần của Vũ trụ của GC - hy vọng mọi người hiểu điều đó. Thời gian còn lại với các ngôn ngữ của GC là vấn đề về phong cách hơn là sự cần thiết hoặc tăng hiệu suất được đảm bảo.
Vào cuối ngày, hãy chắc chắn rằng bạn hiểu những gì đủ điều kiện cho GC và những gì không; khóa, vứt bỏ và vô hiệu hóa một cách thích hợp; sáp trên, sáp tắt; hít vào thở ra; và cho mọi thứ khác tôi nói: Nếu cảm thấy tốt, hãy làm nó. Số dặm của bạn có thể thay đổi ... vì nó nên ...