Một số trình biên dịch .NET tốt là gì?


374

Những trình biên dịch nào bạn đã sử dụng khi làm việc với các chương trình .net và bạn đặc biệt khuyên dùng gì?

Câu trả lời:


285

Tôi đã sử dụng rộng rãi JetBrains dotTraceRedgate ANTS . Chúng khá giống nhau về tính năng và giá cả. Cả hai đều cung cấp hồ sơ hiệu năng hữu ích và hồ sơ bộ nhớ khá cơ bản.

dotTrace tích hợp với Resharper, điều này thực sự tiện lợi, vì bạn có thể cấu hình hiệu suất của bài kiểm tra đơn vị chỉ bằng một cú nhấp chuột từ IDE. Tuy nhiên, dotTrace dường như thường cho kết quả giả (ví dụ: nói rằng một phương pháp phải mất vài năm để chạy)

Tôi thích cách ANTS trình bày kết quả hồ sơ. Nó cho bạn biết mã nguồn và ở bên trái của mỗi dòng cho bạn biết thời gian chạy. dotTrace chỉ có một cái nhìn cây.

Trình biên dịch EQATEC khá cơ bản và yêu cầu bạn biên dịch các phiên bản cụ thể của các hội đồng mà sau đó có thể được chạy trong trình biên dịch EQATEC. Nó là, tuy nhiên, miễn phí.

Nhìn chung, tôi thích ANTS hơn cho cấu hình hiệu năng, mặc dù nếu bạn sử dụng Resharper thì việc tích hợp dotTrace là một tính năng giết người và có nghĩa là nó đánh bại ANTS về khả năng sử dụng.

Microsoft CLR Profiler miễn phí ( .Net framework 2.0 / .Net Framework 4.0 ) là tất cả những gì bạn cần cho cấu hình bộ nhớ .NET.

Cập nhật năm 2011:

Trình lược tả bộ nhớ Scitech có giao diện người dùng cơ bản nhưng có nhiều thông tin hữu ích, bao gồm một số thông tin về bộ nhớ không được quản lý mà dotTrace và ANTS thiếu - bạn có thể thấy nó hữu ích nếu bạn đang thực hiện COM interop, nhưng tôi chưa tìm thấy bất kỳ trình tạo hồ sơ nào tạo COM vấn đề bộ nhớ dễ chẩn đoán - bạn thường phải thoát ra windbg.exe.

Trình biên dịch ANTS đã có những bước nhảy vọt trong vài năm qua và trình lược tả bộ nhớ của nó có một số tính năng thực sự hữu ích, hiện đã đẩy nó lên trước dotTrace như một gói trong dự đoán của tôi. Tôi đủ may mắn để có giấy phép cho cả hai, nhưng nếu bạn định mua một trình tạo hồ sơ .Net cho cả hiệu năng và bộ nhớ, hãy biến nó thành ANTS.


5
Trình lược tả trong Visual Studio cũng thực sự dễ sử dụng, Visual Studio 2010 là bản Beta và do đó cũng miễn phí. Đã có nhiều cải tiến trong năm 2010 để xem tranh chấp và đồng thời. thử đi ...
Rick

15
@Rick Thật không may, trình tạo hồ sơ của Visual Studio không có trong Phiên bản Chuyên nghiệp ...
Drake

Tôi hoàn toàn không đồng ý về trình hồ sơ CLR là tất cả những gì bạn cần cho cấu hình bộ nhớ .NET, mặc dù điều đó có thể đúng nếu bạn không đặt giá trị vào thời gian của mình. Xem câu trả lời của tôi dưới đây để biết tóm tắt về cặp trình biên dịch bộ nhớ tốt nhất - chúng sẽ giúp bạn tìm ra rò rỉ bộ nhớ và các vấn đề tiềm ẩn nhanh hơn nhiều.
Ben Robbins

1
Các bản phát hành hiện tại của trình hồ sơ THIẾT BỊ không còn miễn phí nữa.
David Schmitt

1
Có vẻ như EQATEC Profiler đã trở thành miễn phí cho .NET (toàn khung) một lần nữa
soren.enemaerke

88

Những người khác đã trình bày hồ sơ hiệu năng, nhưng liên quan đến hồ sơ bộ nhớ Tôi hiện đang đánh giá cả Scitech .NET Memory Profiler 3.1 và ANTS Memory Profiler 5.1 (phiên bản hiện tại kể từ tháng 9 năm 2009). Tôi đã thử JetBrains một hoặc hai năm trước và nó không tốt bằng ANTS (đối với cấu hình bộ nhớ) vì vậy lần này tôi không thấy phiền. Từ việc đọc các trang web, có vẻ như nó không có các tính năng cấu hình bộ nhớ giống như hai tính năng khác.

Cả ANTS và trình cấu hình bộ nhớ Scitech đều có các tính năng mà cái kia không có, vì vậy cái nào tốt nhất sẽ phụ thuộc vào sở thích của bạn. Nói chung, Scitech one cung cấp thông tin chi tiết hơn trong khi ANTS thực sự đáng kinh ngạc trong việc xác định đối tượng rò rỉ. Nhìn chung, tôi thích ANTS hơn vì nó rất nhanh trong việc xác định các rò rỉ có thể xảy ra.

Dưới đây là những ưu và nhược điểm chính từ kinh nghiệm của tôi:

Các tính năng phổ biến của ANTS và Scitech .NET Memory Profiler

  • Tính năng phân tích thời gian thực
  • Video hướng dẫn tuyệt vời trên trang web của họ
  • Dễ sử dụng
  • Hiệu suất hợp lý (rõ ràng là chậm hơn so với không có hồ sơ đính kèm, nhưng không đến nỗi bạn trở nên thất vọng)
  • Hiển thị các trường hợp của các đối tượng rò rỉ
  • Về cơ bản cả hai đều làm công việc khá tốt

BẤT CỨ

  • Các bộ lọc một lần nhấp để tìm các rò rỉ phổ biến bao gồm: các đối tượng chỉ được xử lý bởi các bộ xử lý sự kiện, các đối tượng được xử lý nhưng vẫn còn sống và các đối tượng chỉ được giữ bởi một tham chiếu từ một đối tượng được xử lý. Đây có lẽ là tính năng giết người của ANTS - việc tìm kiếm rò rỉ cực kỳ nhanh vì điều này. Theo kinh nghiệm của tôi, phần lớn các rò rỉ là do các trình xử lý sự kiện không được xử lý và ANTS chỉ đưa bạn đến thẳng các đối tượng này. Tuyệt vời.
  • Đồ thị duy trì đối tượng. Mặc dù thông tin tương tự có sẵn trong Scitech, nhưng nó dễ hiểu hơn nhiều trong ANTS.
  • Hiển thị kích thước với trẻ em ngoài kích thước của chính đối tượng (nhưng chỉ khi không may chọn một thể hiện, không có trong danh sách lớp tổng thể).
  • Tích hợp tốt hơn với Visual Studio (nhấp chuột phải vào biểu đồ để chuyển đến tệp)

Trình biên dịch bộ nhớ .NET

  • Hiển thị dấu vết ngăn xếp khi đối tượng được phân bổ. Điều này thực sự hữu ích cho các đối tượng được phân bổ ở nhiều nơi khác nhau. Với ANTS, rất khó để xác định chính xác nơi mà đối tượng bị rò rỉ được tạo ra.
  • Hiển thị số lượng đồ vật dùng một lần mà không được xử lý. Mặc dù không có dấu hiệu rò rỉ, nhưng nó xác định các cơ hội để khắc phục vấn đề này và cải thiện hiệu suất ứng dụng của bạn do việc thu gom rác nhanh hơn.
  • Tùy chọn lọc chi tiết hơn (một số cột có thể được lọc độc lập).
  • Trình bày thông tin về tổng số đối tượng được tạo (bao gồm cả những rác được thu thập). ANTS chỉ hiển thị số liệu thống kê đối tượng 'sống'. Điều này giúp dễ dàng phân tích và điều chỉnh hiệu suất ứng dụng tổng thể (ví dụ: xác định nơi có nhiều đối tượng được tạo không cần thiết mà không nhất thiết phải rò rỉ).

Nói tóm lại, tôi nghĩ ANTS giúp bạn tìm thấy những gì rò rỉ nhanh hơn trong khi Scitech cung cấp thêm một chút chi tiết về hiệu suất bộ nhớ ứng dụng tổng thể của bạn và các đối tượng riêng lẻ một khi bạn biết phải xem gì (ví dụ: theo dõi ngăn xếp khi tạo). Nếu theo dõi ngăn xếp và theo dõi các đối tượng dùng một lần không được phép được thêm vào ANTS, tôi sẽ không thấy cần phải sử dụng bất cứ thứ gì khác.


Phiên bản 4.0 của .NET Memory Profiler (hiện đang ở chế độ xem trước) hiện có chế độ xem biểu đồ. Đây là một tính năng tôi thích trong trình hồ sơ ANTS mà Scitech không có (trong 3.1 / 3.5).
cplotts

45

Gần đây tôi đã phát hiện ra EQATEC Profiler http://www.eqatec.com/tools/profiler . Nó hoạt động với hầu hết các phiên bản .NET và trên một loạt các nền tảng. Nó rất dễ sử dụng và các bộ phận của nó là miễn phí, ngay cả cho sử dụng thương mại.


Thất bại trong các cuộc gọi đuôi quá :( Báo cáo lỗi.
leppie

Điều này chỉ miễn phí cho sử dụng phi thương mại.
Jon Seigel

7
Nó hoàn toàn miễn phí trở lại vào tháng 8 năm 08 khi TrolleFar viết câu trả lời của mình. Bây giờ, như Jon nói, nó chỉ miễn phí cho sử dụng phi thương mại.
Richard Flamsholt

8
Hóa ra họ đã thay đổi các điều khoản cấp phép một lần nữa. Các bộ phận của nó là miễn phí cho sử dụng thương mại một lần nữa.
TrolleFar

Kể từ phiên bản .NET thông thường của FEB2011 cho bản thân / thương mại là miễn phí. Công cụ này rất hay vì nó hoạt động trên mô hình máy khách / máy chủ và có thể lập hồ sơ / vượt qua các ranh giới lặp lại (ví dụ: Bản địa-> COM-> NET-> COM-> NET có thể được định hình). Giao diện người dùng khá khủng khiếp mặc dù :-)

31

[ Tiết lộ đầy đủ ]

Mặc dù chưa có đầy đủ tính năng như một số trình biên dịch bộ nhớ .NET khác được liệt kê ở đây, có một mục mới trên thị trường có tên JustTrace . Nó được tạo bởi Telerik và mục tiêu chính của nó là làm cho việc theo dõi / định hình dễ dàng hơn và nhanh hơn để thực hiện cho tất cả các loại ứng dụng (web / Silverlight / desktop).

Nếu bạn đã từng tìm thấy hồ sơ và tối ưu hóa đáng sợ hoặc chậm với các công cụ khác, thì JustTrace có thể đáng xem.


12
Khi tôi tải xuống và dùng thử, Telerik muốn tôi "đăng ký" và "tạo tài khoản". Và tất cả các nút đăng ký bản tin được đánh dấu theo mặc định. Tôi rất vui khi được dùng thử JustTrace, nhưng không, nếu Telerik làm điều này khó khăn.
Ryan Lundy

1
Cảm ơn vì đã cố gắng, Kyralessa. Chúng tôi biết rằng quá trình có thể được cải thiện. Chúng tôi đang làm việc trên đó ngay bây giờ. Chúng tôi hy vọng sẽ loại bỏ những rào cản đó sớm. Hiện tại, chỉ cần bỏ chọn các hộp và trong 2 phút bạn có thể có tài khoản và tải xuống JustTrace miễn phí. Xin lỗi vì những rắc rối ngắn hạn. -T
Todd

9
đăng lại và cho tôi biết khi nào tôi có thể tải xuống mà không cần tạo tài khoản và tôi sẽ dùng thử.
Ryan Lundy

4
Cập nhật: Hôm nay tôi đã có thể tải xuống bằng liên kết trong câu trả lời mà không cần phải tạo tài khoản.
Ryan Lundy

25

Đừng quên nProf - một trình lược tả phần mềm miễn phí hoàn hảo.


3
Trông có vẻ như bị bỏ rơi ... chỉ là một bản phát hành alpha từ năm 2006 :-(
Mauricio Scheffer

2
Làm việc tuyệt vời cho tôi. Bây giờ nó là một dự án Google Code. Đã phát hành vào tháng 7 năm 2009.
User1

19
Trang nProf hiện nêu rõ: NProf không được tích cực phát triển nữa. Nếu bạn đang tìm kiếm một trình tạo hồ sơ .NET mã nguồn mở, hãy xem SlimTune ( code.google.com/p/slimtune )
Richard Ev


12

Hồ sơ ANTS . Tôi đã không sử dụng nhiều, nhưng tôi thực sự không có bất kỳ phàn nàn nào về ANTS. Các hình ảnh thực sự hữu ích.




9

Tôi đã làm việc với JetBrains dotTrace cho WinForms và Ứng dụng bảng điều khiển (chưa được thử nghiệm trên ASP.net) và nó hoạt động khá tốt:

Gần đây, họ cũng đã thêm một "Giấy phép cá nhân" rẻ hơn đáng kể so với giấy phép của công ty. Tuy nhiên, nếu bất cứ ai khác biết một số rẻ hơn hoặc thậm chí miễn phí, tôi cũng muốn nghe :-)


7

Đừng quên scitech tuyệt vời bộ nhớ .net

Thật tuyệt vời khi theo dõi lý do tại sao ứng dụng .net của bạn hết bộ nhớ.


1
Công cụ rất đẹp. Dễ sử dụng và cho phép bạn điều hướng qua biểu đồ đối tượng của bạn. Tôi đặc biệt thích theo dõi bộ nhớ 'thời gian thực'. Nó cho bạn thấy cách tính đối tượng của bạn phát triển trong thời gian chạy của ứng dụng.
lowglider

5

Tôi sẽ thêm khả năng của dotTrace vào bộ nhớ khác và các phiên theo dõi hiệu suất là vô giá (ANTS cũng có thể có tính năng tìm khác biệt về bộ nhớ, nhưng tôi không thấy hiệu suất khác biệt).

Có thể chạy phiên hồ sơ trước và sau khi sửa lỗi hoặc nâng cao, sau đó so sánh kết quả là vô cùng có giá trị, đặc biệt là với ứng dụng .NET kế thừa của voi ma mút (như trong trường hợp của tôi), trong đó hiệu suất không bao giờ là ưu tiên và trong đó việc tìm kiếm tắc nghẽn có thể RẤT tẻ nhạt. Thực hiện khác biệt trước và sau cho phép bạn thấy sự thay đổi về số lượng cuộc gọi cho từng phương thứcthay đổi thời lượng cho từng phương thức .

Điều này hữu ích không chỉ trong quá trình thay đổi mã, mà còn nếu bạn có một ứng dụng sử dụng một cơ sở dữ liệu khác nhau, cho mỗi khách hàng / khách hàng. Nếu một khách hàng phàn nàn về sự chậm chạp, bạn có thể chạy phiên hồ sơ bằng cơ sở dữ liệu của họ và so sánh kết quả với cơ sở dữ liệu "nhanh" để xác định hoạt động nào đang đóng góp cho sự chậm chạp. Tất nhiên có nhiều công cụ hiệu suất phía cơ sở dữ liệu, nhưng đôi khi tôi thực sự giúp xem các số liệu hiệu suất từ ​​phía ứng dụng (vì nó gần với những gì người dùng thực sự nhìn thấy).

Tóm lại: dotTrace hoạt động rất tốt và khác biệt là vô giá.


4

AQTime là hợp lý, nhưng có một chút đường cong học tập và không dễ sử dụng như được tích hợp sẵn trong Team Suite



3

Bản phát hành hiện tại của SharpDevelop (3.1.1) có một hồ sơ tích hợp đẹp. Nó khá nhanh và tích hợp rất tốt vào SharpDevelop IDE và trình chạy NUnit của nó. Kết quả được hiển thị theo kiểu Cây / Danh sách linh hoạt (sử dụng LINQ để tạo lựa chọn của riêng bạn). Nhân đôi phương thức được hiển thị nhảy trực tiếp vào mã nguồn.


2

Tôi đã làm việc với trình hồ sơ của RedGate trong quá khứ. Đã làm công việc cho tôi.


2

Không tự mình thử, nhưng có lẽ là dotTrace ? Ứng dụng ReSharper của họ chắc chắn là một ứng dụng tốt. Có lẽ dotTrace cũng vậy :)


1
Tôi đã sử dụng dotTrace và có thể giới thiệu nó.
Jon Skeet

2

Tôi nghi ngờ rằng trình hồ sơ đi kèm với Visual Studio Team System là trình tạo hồ sơ tốt nhất, nhưng tôi đã thấy nó đủ tốt trong nhiều trường hợp. Những gì cụ thể bạn cần ngoài những gì VS cung cấp?

EDIT: Thật không may, nó chỉ có sẵn trong VS Team System, nhưng nếu bạn có quyền truy cập vào đó thì đáng để kiểm tra.


1
Tôi đã nói về một trong VS2008, nhưng nó có thể không có sẵn trong tất cả các phiên bản (Tôi đang sử dụng VSTS). Từ các video PDC2008, có vẻ như trình hồ sơ sẽ cải thiện rất nhiều trong VS2010.
Brian Rasmussen 04/03/2016

1
Trình hồ sơ đó chỉ khả dụng với các phiên bản Team Systems của Visual Studio.
Chris Brandma

Visual Studio Team System (Developer Edition) có một hồ sơ. Xem < microsoft.com/visualstudio/en-us/products/teamsystem/ Khăn >.
gix

Visual Studio có một hồ sơ từ VS 2005. Nó chỉ khả dụng với Team System. Trên thực tế, đó là lý do tôi sử dụng hệ thống nhóm (trong công việc tôi có chuyên môn). Đó là một hồ sơ rất tốt, theo ý kiến ​​của tôi.
cấu hình

Đó là một hồ sơ tốt, nhưng nó không hoàn toàn theo tiêu chuẩn của phiên bản ANTS mới.
mqp

2

Phiên bản mới nhất của trình lược tả bộ nhớ ANTS (tôi nghĩ là 5) chỉ đơn giản là đá !!! Tôi đã ám ảnh một rò rỉ bằng WinDbg và SOS vì nó đã được chứng minh là cách tốt nhất trước đây, sau đó tôi đã thử ANTS và tôi đã nhận được nó trong vài phút. Thực sự là một phần mềm tuyệt vời.


2

Tôi muốn thêm trình cấu hình java và .net của bạn, tôi thích nó cho Java, mặc dù chưa thử phiên bản .NET.


1

Thật không may, hầu hết các trình biên dịch tôi đã thử thất bại khi được sử dụng với các cuộc gọi đuôi, đáng chú ý nhất là ANTS. Tôi chỉ kết thúc bằng văn bản của riêng tôi. Có một triển khai đơn giản trên CodeProject mà bạn có thể sử dụng làm cơ sở.



1

Tôi phải mang theo một công cụ tuyệt vời để thông báo cho bạn mà tôi đã sử dụng đôi khi trở lại. Studio đánh chặn AVICode . Trong công ty trước đây của chúng tôi, chúng tôi đã sử dụng công cụ tuyệt vời này để lập hồ sơ ứng dụng web ( Đây được cho là ứng dụng web lớn nhất trên thế giới và là dự án CNTT dân sự lớn nhất từng được thực hiện ). Đội ngũ biểu diễn đã làm nên điều kỳ diệu với sự trợ giúp của công cụ tuyệt vời này. Thật là một nỗi đau khi cấu hình nó, nhưng đó là một hoạt động một lần và tôi sẽ nói rằng nó đáng giá thời gian. Kiểm tra trang này để biết chi tiết.

Cảm ơn, James


1

Đối với tôi SpeedTrace là công cụ tốt nhất trên thị trường vì nó không chỉ giúp bạn tìm ra các nút thắt bên trong các ứng dụng của mình. Nó cũng giúp bạn trong các tình huống khắc phục sự cố để tìm hiểu lý do tại sao ứng dụng của bạn bị lỗi, thiết lập của bạn không cài đặt, ứng dụng của bạn bị treo, hiệu suất ứng dụng của bạn đôi khi kém tùy thuộc vào dữ liệu đầu vào, ví dụ: để xác định các giao dịch db chậm.


1

Gần đây tôi đã thử nghiệm JustTrace của Telerik và mặc dù nó cách xa một sản phẩm hoàn chỉnh, các chàng trai đang đi đúng hướng.


1

Nếu Cấp phép là một vấn đề, bạn có thể thử WINDBG để định hình bộ nhớ


1

Trình hồ sơ NuMega True Time tồn tại trong DevPartner Studio của Micro Focus. Nó cung cấp chi tiết mức độ dòng và phương thức cho các ứng dụng .NET chỉ cần PDB, không cần nguồn (nhưng nó giúp.) Nó có thể phân biệt giữa các thói quen nặng về mặt thuật toán so với các ứng dụng có I / O dài chờ sử dụng trình điều khiển thời gian chế độ hạt nhân độc quyền của chúng tôi. Phiên bản 10.5 được hỗ trợ 64 quy trình mới vào ngày 4 tháng 2 năm 2011. Ổ cắm không biết xấu hổ: Tôi làm việc trên dòng sản phẩm DevPartner. Theo dõi tại http://www.DevPartner.com để biết tin tức về sự ra mắt 10.5.

Tuyên bố miễn trừ trách nhiệm: Tôi là Giám đốc sản phẩm cho DevPartner tại Micro Focus.


Chào mừng đến với SO. Bạn sẽ cần tiết lộ bất kỳ mối quan hệ nào với DevPartner hoặc bạn sẽ bị coi là người gửi thư rác và bị xử lý như vậy. Tôi thấy bạn đã trả lời một số câu hỏi định hình ...
John Saunders

0

Tôi đã tìm thấy rất nhiều vấn đề trong một ứng dụng C # lớn khi sử dụng ứng dụng này .

Thông thường, sự cố xảy ra trong quá trình khởi động hoặc tắt máy khi các plugin đang được tải và các cấu trúc dữ liệu lớn đang được tạo, hủy, tuần tự hóa hoặc giải tuần tự hóa. Thường thì chúng được tạo và khởi tạo nhiều lần và các trình xử lý thay đổi được thêm vào nhiều lần, làm tăng thêm vấn đề.

Trong những trường hợp như thế này, chương trình có thể chậm chạp đến mức chỉ có 2 mẫu là đủ để xác định chính xác các trang web gọi phương thức / chức năng / thuộc tính có tội.


0

Chúng tôi đã chọn YourKit Profiler cho .NET trong công ty của tôi vì đó là giá trị tốt nhất (giá so với tính năng). Đối với một công ty nhỏ muốn có giấy phép linh hoạt (giấy phép thả nổi) thì đó là một lựa chọn hoàn hảo - ANTS là nhà phát triển chỗ ngồi tại thời điểm đó.

Ngoài ra, nó cung cấp cho chúng tôi khả năng đính kèm vào quy trình đang chạy mà dotTrace không thể thực hiện được. Coi chừng việc đính kèm không phải là tùy chọn tốt nhất vì mọi thứ .NET sẽ chậm lại, nhưng đây là cách duy nhất để cấu hình các ứng dụng .NET được khởi động bởi các quy trình khác. Tính năng khôn ngoan, ANTS và dotTrace tốt hơn - nhưng cuối cùng YourKit đã đủ tốt.


Bắt đầu từ tháng 1 năm 2012, YourKit đã tăng giá cho trình hồ sơ YourKit. Do đó, lợi thế về giá có thể không còn hiệu lực.

0

Nếu bạn đang dùng ASP.NET MVC, bạn có thể dùng thử MVCMiniProfiler (http://benjii.me/2011/07/USE-the-mvc-mini-profiler-with-entity-framework/)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.