2009-04-05 25 views

Trả lời

1

Tôi không biết một trong số đó thay thế điều đó nhưng cuốn sách CLR via C# sẽ cung cấp cho bạn nhiều kiến ​​thức sâu sắc và có liên quan về cách CLR hoạt động và nơi nó tiêu tốn rất nhiều thời gian và tài nguyên.

2

Tôi không nghĩ vậy và tôi không nghĩ rằng phiên bản cập nhật sẽ khác nhiều.

Số liệu thời gian sẽ khác với máy thử nghiệm có lẽ sẽ mới hơn và nhanh hơn, nhưng mối quan hệ giữa các thử nghiệm sẽ khá giống nhau.

Bài viết nói về các tác động cấp thấp của các hoạt động phổ biến trong mã được quản lý và điều đó không thay đổi nhiều kể từ khi viết artice. Các phiên bản mới của khung công tác đã bổ sung thêm rất nhiều chức năng, nhưng tất cả đều được xây dựng trên các nguyên thủy đã có sẵn từ C# 1.0.

16

Không. Tôi chưa bao giờ cập nhật nó, nhưng tôi nghĩ rằng với các hạt muối thích hợp, lời khuyên chung và hầu hết các quy tắc của bài viết trong bài viết vẫn giữ vững ngày hôm nay.

(Điều đó nói rằng, nó sẽ là thú vị để lặp lại các thí nghiệm ngày hôm nay để xem làm thế nào thời nguyên thủy đã thay đổi, làm thế nào các mã được tạo đã thay đổi, và làm thế nào bộ vi xử lý đã thay đổi.)

Các chi phí chung tương đối của hầu hết nguyên thủy thắng đã không thay đổi nhiều, nhưng một số sẽ thay đổi đáng kể. Ví dụ, hiệu suất tầm thường của cuộc gọi đại biểu không tĩnh được cải thiện đáng kể (trong .NET 2.0, nếu tôi nhớ chính xác). Tôi ghét phải nghĩ rằng một học viên hôm nay sẽ đi ra khỏi con đường của mình để tránh sự ủy nhiệm của đại biểu bởi vì tôi báo cáo nó rất tốn kém vào năm 2003.

Vì .NET 1.1, tôi mong đợi nhiều chuỗi mã đã được biên dịch thay đổi; sẽ có các tối ưu hóa trình biên dịch JIT mới (mà không hiển thị tốt như vậy trong các microbenchmarks); các hỗn hợp khác nhau của mã JIT'd và NGEN'd (và NGEN không được khám phá trong bài viết của tôi); và các hệ thống con chính như bộ thu gom rác đã được điều chỉnh liên tục qua nhiều năm.

Tôi nhắc lại lời khuyên cảnh báo về tiềm năng của hiệu ứng hệ thống bộ nhớ để làm giảm chi phí của bất kỳ số lượng hoạt động ban đầu của mã được quản lý riêng lẻ - và lưu ý rằng nhiều thay đổi. Ví dụ, rất nhiều công việc hiệu suất CLR trong 03-04 đã đi vào hành vi làm việc tốt hơn (chẳng hạn như giảm thiểu các trang riêng tư bẩn) của các cụm hệ thống NGEN'd.

Tất nhiên chủ đề của bài viết là điều bắt buộc để suy nghĩ chu đáo và thận trọng hiệu suất của mã của bạn và chủ đề đó là vô tận.

Nhân tiện, tôi luôn muốn làm một bài tiếp theo về chi phí thời gian và không gian dự kiến ​​/ điển hình của vài trăm phương pháp .NET BCL hàng đầu hoặc được sử dụng nhiều nhất, và để giới thiệu các câu chuyện cảnh báo một vài những câu chuyện kinh dị mà chúng tôi đã tìm thấy trên hiệu suất .NET. Điều đó dẫn đến một số suy nghĩ rất thú vị về làm thế nào để mô tả hiệu suất thực nghiệm của một thư viện lớp/khuôn khổ như thực sự được sử dụng bởi các học viên thực sự trong tự nhiên ...

Cảm ơn bạn đã đọc nó trở lại, và cảm ơn bạn đã quan tâm liên tục của bạn .

p.s.Tôi thấy Vance Morrison sau đó đã viết một hai phần MSDN loạt lớn về chủ đề này - nếu bạn rất thích bài viết của tôi bạn sẽ yêu sau đây:

http://msdn.microsoft.com/en-us/magazine/cc500596.aspx

http://msdn.microsoft.com/en-us/magazine/cc507639.aspx

+1

tôi nên thêm rằng bộ vi xử lý cũng đã thay đổi. Tất nhiên chúng cung cấp nhiều luồng và/hoặc lõi. Và các nhà thiết kế CPU đã có thể nhai các dấu vết thực hiện của các ứng dụng OOP và JVM/CLR để điều chỉnh và tinh chỉnh các kiến ​​trúc vi mô của chúng. Ví dụ như dự đoán nhánh tốt hơn trong ngữ cảnh của các lời gọi phương thức ảo và gọi/trả về phương thức ngắn cho phép một số mã mà JIT không thể tối ưu hóa để thực hiện không đúng thứ tự với ít nguy cơ, rollback hoặc quầy. Một số chi phí được tối ưu hóa hoàn toàn. Điều này làm cho microbenchmarking có nhiều vấn đề hơn và nguy hiểm! –

+0

Mặc dù một số bộ vi xử lý đã bắt đầu di chuyển theo hướng ngược lại, quay trở lại theo thứ tự nhiều hơn và với các thanh ghi theo nghĩa đen (ví dụ PPC, Larabee), điều này khiến cho nhiều hình phạt đường ống trở nên đau đớn hơn. – Crashworks

+0

Đúng vậy! Tôi nghĩ xu hướng “hiệu suất năng lượng của một phép tính vượt trội hơn tốc độ tính toán” tiếp tục thu thập động lượng (giả sử sự kết hợp của phần mềm thông lượng song song) trở nên thú vị hơn về kinh tế), chúng ta sẽ thấy nhiều kiến ​​trúc vi mô đơn giản hơn. thậm chí là sự pha trộn phức tạp và đơn giản trong các bộ xử lý đa nhân chip không đồng nhất. Thật thú vị, khi con lắc phần cứng quay trở lại nó có thể trong thời gian được phản ánh trong những thay đổi trong codegen VM và tổ chức! Phần mềm định hình phần cứng và ngược lại. –

Các vấn đề liên quan