Які хороші .NET-профілі?


374

Які профілі ви використовували під час роботи з програмами .net, і які б ви особливо рекомендували?

Відповіді:


285

Я широко використовував JetBrains dotTrace та Redgate ANTS . Вони досить схожі за функціями та ціною. Вони обидва пропонують корисне профілювання продуктивності та досить базове профілювання пам'яті.

dotTrace інтегрується з Resharper, що дуже зручно, оскільки ви можете профілювати виконання тесту одиниці одним клацанням миші від IDE. Однак, здається, dotTrace часто дає хибні результати (наприклад, говорить про те, що метод зайняв кілька років)

Я віддаю перевагу тому, як ANTS представляє результати профілювання. Він показує вам вихідний код і ліворуч від кожного рядка повідомляє про те, скільки часу потрібно було запустити. dotTrace просто має вид на дерево.

Профілер EQATEC є досить базовим і вимагає, щоб ви склали спеціальні інструментальні версії своїх збірок, які потім можна запустити у профілі EQATEC. Це, однак, безкоштовно.

В цілому я віддаю перевагу ANTS для профілювання продуктивності, хоча якщо ви використовуєте Resharper, то інтеграція dotTrace є вбивчою особливістю і означає, що вона перемагає ANTS за зручність використання.

Безкоштовний Microsoft CLR Profiler ( .Net Framework 2.0 / .Net Framework 4.0 ) - все, що потрібно для профілювання NET-пам'яті.

Оновлення 2011 року:

Профайлер пам'яті Scitech має досить основний користувальницький інтерфейс , але багато корисної інформації, включаючи деяку інформацію про некерованою пам'яті, dotTrace і МУРАВЙОВ недолік - ви могли б знайти це корисно , якщо ви робите COM Interop, але я до сих пір знайти профайлер , що робить COM Проблеми з пам'яттю легко діагностувати - вам зазвичай доводиться вириватися windbg.exe.

Профілер ANTS за останні кілька років з'явився у стрибках та межі, і його профайлер пам'яті має деякі справді корисні функції, які тепер висунули його вперед як dotTrace як пакет, на мою оцінку. Мені пощастило мати ліцензії для обох, але якщо ви збираєтесь придбати один .Net-профілер як для продуктивності, так і для пам'яті, зробіть це ANTS.


5
Профілер в Visual Studio також дуже простий у використанні, Visual Studio 2010 є в бета-версії, а значить, також безкоштовний. У 2010 році було багато вдосконалень щодо перегляду суперечливості та одночасності. спробуйте ...
Рік,

15
@Rick На жаль, профілер Visual Studio не присутній у Professional Edition ...
Дрейк

Я категорично не згоден з тим, що CLR-профілер є всім необхідним для профілювання NET-пам’яті, хоча це, можливо, правда, якщо ви не приділяєте значення своєму часу. Дивіться мою відповідь нижче для резюме кращої пари профайлером пам'яті - вони будуть допомогти вам знайти витоку пам'яті та потенційні проблеми набагато швидше.
Бен Роббінс

1
Поточні версії профілера EQUATEC вже не безкоштовні.
Девід Шмітт

1
Здається, що EQATEC Profiler знову став безкоштовним для .NET (повний фреймворк)
soren.enemaerke

88

Інші стосуються профілювання продуктивності, але щодо профілювання пам'яті я зараз оцінюю як Scitech .NET Memory Profiler 3.1, так і ANTS Memory Profiler 5.1 (поточні версії станом на вересень 2009 року). Я спробував JetBrains рік чи два тому, і це було не так добре, як ANTS (для профілювання пам'яті), тому я цього разу не турбувався. Якщо читати веб-сайти, схоже, що у нього немає таких же функцій профілювання пам'яті, що й у двох інших.

І ANTS, і профайлер пам'яті Scitech мають функції, які не має інших, тому найкраще буде залежати від ваших уподобань. Взагалі кажучи, Scitech надає більш детальну інформацію, тоді як ANTS - це справді неймовірно при виявленні об'єкта, що протікає. В цілому, я віддаю перевагу ANTS, оскільки він так швидко виявляє можливі витоки.

Ось основні плюси та мінуси кожного з мого досвіду:

Загальні характеристики ANTS і Scitech .NET Profiler

  • Функція аналізу в режимі реального часу
  • Відмінні відеозаписи на їхніх веб-сайтах
  • Простий у використанні
  • Розумно виконаний (очевидно повільніше, ніж без прикріпленого профілера, але не так сильно ви засмучуєтесь)
  • Показати випадки протікання предметів
  • В основному вони обидва виконують роботу досить добре

АНТИ

  • Фільтри одним клацанням миші, щоб знайти загальні витоки, включаючи: об’єкти, які зберігаються в живих лише обробниками подій, об'єкти, які розміщені, але все ще живуть, і об'єкти, які зберігаються в живих лише за допомогою посилання на розміщений об’єкт. Це, мабуть, вбивча особливість ANTS - пошук витоків надзвичайно швидкий через це. На мій досвід, більшість витоків спричинені тим, що обробники подій не відкочуються, і ANTS просто перевозить вас прямо до цих об'єктів. Дивовижно.
  • Графік збереження об'єкта. Хоча ця інформація доступна і в Scitech, її інтерпретувати в ANTS набагато простіше.
  • Показує розмір разом із дітьми на додаток до розміру самого об'єкта (але лише тоді, коли екземпляр вибраний, на жаль, не в загальному списку класів).
  • Краща інтеграція до Visual Studio (клацніть правою кнопкою миші на графіку, щоб перейти до файлу)

Scitech .NET Profiler пам'яті

  • Показує трасування стека при виділенні об'єкта. Це дійсно корисно для об’єктів, які виділяються у багатьох різних місцях. За допомогою ANTS важко визначити, де саме створений об'єкт, що протікав.
  • Показує кількість одноразових предметів, які не були утилізовані. Хоча це не вказує на витік, але він виявляє можливості виправити цю проблему та покращити продуктивність вашої програми внаслідок швидшого вивезення сміття.
  • Більш детальні параметри фільтрації (кілька стовпців можна відфільтрувати самостійно).
  • Представляє інформацію про загальну кількість створених об'єктів (включаючи зібране сміття). ANTS показує лише статистику "живого" об'єкта. Це полегшує аналіз та налаштування загальної продуктивності програми (наприклад, визначте, де безліч об'єктів створюється без потреби, які не обов'язково протікають).

Підсумовуючи, я думаю, що ANTS допомагає швидше знайти те, що протікає, тоді як Scitech надає трохи більше детальних відомостей про загальну продуктивність пам’яті додатків та окремих об’єктів, як тільки ви дізнаєтеся, на що звернути увагу (наприклад, стеження стека при створенні). Якщо слід додавати слід стека та відстеження нерозкритих одноразових об'єктів до ANTS, я б не бачив необхідності використовувати щось інше.


4.0 версія .NET Profiler Memory (тепер у попередньому перегляді) тепер має графічний вигляд. Це одна з особливостей, які мені сподобалися в ANT-профілі, що у Scitech не було (у 3.1 / 3.5).
cplotts

45

Нещодавно я виявив EQATEC Profiler http://www.eqatec.com/tools/profiler . Він працює з більшістю версій .NET і на купі платформ. Він простий у використанні, а частини його безкоштовні, навіть для комерційного використання.


Не вдається і в
хвістових

Цей безкоштовний лише для некомерційного використання.
Джон Сейгель

7
Це було абсолютно вільно ще в серпні08 року, коли TrolleFar написав свою відповідь. Тепер, як каже Джон, це безкоштовно лише для некомерційного використання.
Річард Фламшольт

8
Виявляється, вони знову змінили ліцензійні умови. Частини його знову безкоштовно для комерційного використання.
TrolleFar

Станом на FEB2011, звичайна версія .NET для самостійного / комерційного використання безкоштовна. Цей інструмент хороший тим, що він працює на моделі клієнт / сервер і може профілювати / пропускати повторні межі (наприклад, Native-> COM-> NET-> COM-> NET можна профілювати). Користувальницький інтерфейс досить жахливий :-)

31

[ Повне розкриття інформації ]

Хоча ще не настільки повнофункціональний, як деякі інші перераховані тут профайли .NET, на ринку з'явилася нова запис JustTrace . Це зроблено Telerik, і його основна мета полягає в тому, щоб зробити простежування / профілювання легшим та швидшим для всіх типів програм (web / Silverlight / desktop).

Якщо ви коли-небудь знаходили профілювання та оптимізацію залякуючими або повільними з іншими інструментами, то JustTrace, можливо, варто переглянути.


12
Коли я йду завантажити його і спробувати, Telerik хоче, щоб я "зареєструвався" та "створив обліковий запис". І всі ці кнопки підписки на розсилку на позначки поставлені прапорцями за замовчуванням. Я був би радий спробувати JustTrace, але ні, якщо Telerik зробить це важким.
Райан Лунді

1
Дякуємо за спробу, Kyralessa. Ми знаємо, що процес можна вдосконалити. Ми працюємо над цим зараз. Ми сподіваємось скоро усунути ці перешкоди. Поки просто зніміть прапорці, і за 2 хв ви можете мати обліковий запис і безкоштовно завантажити JustTrace. Вибачте за короткочасні проблеми. -T
Тодд

9
відклик назад, і дайте мені знати, коли я можу завантажити, не створюючи обліковий запис, і я спробую.
Райан Лунді

4
Оновлення: Сьогодні мені вдалося завантажити за допомогою посилання у відповідь, не потребуючи створення облікового запису.
Райан Лунді

25

Не забувайте nProf - це переважно хороший, безкоштовний профайлер.


3
Виглядає як занедбаний ... лише альфа-реліз від 2006 року :-(
Маурісіо Шеффер

2
Для мене чудово працювали. Зараз це проект Google Code. Вийшов у липні 2009 р.
User1

19
На сторінці nProf зараз зазначено: NProf вже не активно розвивається. Якщо ви шукаєте відкритий джерело .NET-профілера, подивіться на SlimTune ( code.google.com/p/slimtune )
Річард Ев,





9

Я працював з JetBrains dotTrace для WinForms та консольних додатків (ще не тестований на ASP.net), і він працює досить добре:

Нещодавно вони також додали "Персональну ліцензію", яка значно дешевша від корпоративної. І все-таки, якщо хтось ще знає кілька дешевих або навіть безкоштовних, я хотів би почути також :-)


7

Не забувайте про дивовижну програму профайлер пам’яті .net

Це чудово підходить для того, щоб відстежувати, чому у вашої програми .net не вистачає пам’яті.


1
Дуже приємний інструмент. Проста у використанні та дозволяє пересуватися по вашому об’єктному графіку. Мені особливо подобається відстеження пам'яті в реальному часі. Він показує, як розвиваються підрахунки об'єктів під час виконання програми.
лоунглер

5

Я додам, що здатність dotTrace розрізняти сеанси відстеження пам’яті та продуктивності абсолютно неоціненна (ANTS також може мати особливість розрізнення пам’яті, але я не бачив відмінності в роботі).

Можливість запускати сеанс профілювання до та після виправлення помилок або їх покращення, а потім порівнювати результати неймовірно цінно, особливо із спадщиною .NET-додатка для мамонта (як у моєму випадку), коли продуктивність ніколи не була пріоритетною і де можна було знайти вузькі місця. ДУЖЕ нудно. Робота різниці перед і після дозволяє вам побачити зміну кількості викликів для кожного методу та зміну тривалості для кожного методу .

Це корисно не лише під час зміни коду, але і якщо у вас є додаток, який використовує іншу базу даних, скажімо, для кожного клієнта / замовника. Якщо один клієнт скаржиться на повільність, ви можете запустити сеанс профілювання за допомогою своєї бази даних та порівняти результати з «швидкою» базою даних, щоб визначити, які операції сприяють повільності. Звичайно, існує багато інструментів для роботи на базі даних, але іноді я дійсно допомагає бачити показники продуктивності з боку програми (оскільки це ближче до того, що бачить користувач насправді).

Підсумок: dotTrace чудово працює, а розбіжність є неоціненною.


4

AQTime розумний, але має трохи кривої навчання і не такий простий у використанні, як вбудований в Team Suite



3

Поточний реліз SharpDevelop (3.1.1) має приємний інтегрований профілер. Це досить швидко і дуже добре інтегрується в SharpDevelop IDE та його NUnit бігун. Результати відображаються у гнучкому стилі дерева / списку (використовуйте LINQ для створення власного вибору). Подвійне клацання відображуваного методу перескакує безпосередньо у вихідний код.


2

Я раніше працював з профілером RedGate. Зробив роботу для мене.


2

Я сам не пробував цього, але, можливо, dotTrace ? Їх додаток ReSharper, безумовно, хороший. Можливо, dotTrace теж :)


1
Я використовував dotTrace і можу рекомендувати його.
Джон Скіт

2

Я сумніваюся, що профілер, який постачається з Visual Studio Team System, є найкращим профілером, але я багато разів виявляв, що він досить хороший. Що конкретно вам потрібно понад те, що пропонує VS?

EDIT: На жаль, він доступний лише в командній системі VS, але якщо у вас є доступ, варто перевірити.


1
Я говорив про той у VS2008, але він може бути доступний не у всіх версіях (я використовую VSTS). З відео PDC2008 здається, що профілер значно покращиться у VS2010.
Брайан Расмуссен

1
Цей профілер доступний лише у версіях Team System Visual Studio.
Кріс Брандсма

Система Visual Studio Team (версія для розробників) має профілера. Див. < Microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix

Visual Studio має профайлер з VS 2005. Він доступний лише в Team System. Це, власне, причина, що я використовую командну систему (у роботі я професіонал). На мій погляд, це дуже хороший профілер.
конфігуратор

Це прекрасний профайлер, але він не зовсім відповідає стандарту нової версії ANTS.
mqp

2

Найновіша версія профіля пам'яті ANTS (я думаю, це 5) просто гойдається !!! Я переслідував витік за допомогою WinDbg і SOS, оскільки це було найкращим способом раніше, тоді я спробував ANTS, і я отримав його за лічені хвилини. Дійсно чудовий фрагмент програмного забезпечення.



1

Невдача у більшості профілів, яких я намагався зазнати невдачі при використанні з хвостовими дзвінками, особливо - ANTS. Я просто закінчую писати своє. На CodeProject є проста реалізація, яку ви можете використовувати як базу.



1

Я повинен надати вам чудовий інструмент, який я колись використовував. AVICode Interceptor Studio . У моїй попередній компанії ми використовували цей чудовий інструмент для аналізу веб-застосунку ( Це, мабуть, є найбільшим веб-додатком у світі та найбільшим цивільним ІТ-проектом, що коли-небудь робився ). Команда вистави творила чудеса за допомогою цього чудового інструменту. Налаштувати це боляче, але це разова діяльність, і я б сказав, що варто того часу. Ознайомтесь на цій сторінці для отримання детальної інформації.

Спасибі, Джеймс


1

Для мене SpeedTrace - найкращий інструмент на ринку, оскільки він не тільки допомагає вам знайти вузькі місця у ваших програмах. Це також допомагає вам у вирішенні сценаріїв усунення несправностей, щоб дізнатись, чому ваша програма зазнала збоїв, налаштування не встановлено, ваша програма зависла, продуктивність програми іноді погана, залежно від введення даних, наприклад, для виявлення повільних транзакцій db.


1

Я нещодавно випробовував JustTrace на Telerik, і хоча це далеко від готового продукту, хлопці йдуть у правильному напрямку.


1

Якщо ліцензування - це проблема, ви можете спробувати WINDBG для профілювання пам'яті


1

Профілер NuMega True Time живе в DevPartner Studio від компанії Micro Focus. Він надає детальну інформацію про рівні та способи для .NET-додатків, що вимагають лише PDB, не потрібне джерело (але це допомагає.) Це може розрізняти алгоритмічно важкі підпрограми порівняно з тими, хто з тривалими очікуваннями вводу-виводу використовує наш власний драйвер часу режиму ядра. Версія 10.5 постачається з новою підтримкою 64-процесів 4 лютого 2011 року. Безсоромний штекер: Я працюю на лінійці продуктів DevPartner. Слідкуйте за адресою http://www.DevPartner.com для новин про запуск 10.5.

Відмова: Я - менеджер продуктів для DevPartner в Micro Focus.


Ласкаво просимо в СО. Вам потрібно буде розкрити будь-які стосунки з DevPartner, або вас вважатимуть спамером і розглядаються як такі. Я бачу, що ви відповіли на ряд питань, що деталізуються ...
Джон Сондерс,

0

Я знайшов безліч проблем у великому додатку C # за допомогою цього .

Зазвичай проблема виникає під час запуску чи відключення, коли плагіни завантажуються, а великі структури даних створюються, знищуються, серіалізуються або десеріалізуються. Часто вони створюються та ініціалізуються не один раз, а обробники змін змінюються кілька разів, що ще більше ускладнює проблему.

У таких випадках програма може бути настільки млявою, що достатньо лише 2 зразків для точного визначення винного методу / функції / майнових сайтів виклику.


0

Ми вибрали YourKit Profiler для .NET в моїй компанії, оскільки це було найкращим співвідношенням (ціна та особливість). Для невеликої компанії, яка хоче мати гнучкі ліцензії (плаваючі ліцензії), це був ідеальний вибір - ANTS був медаленом сидіння для розробників у той час.

Крім того, це дало нам можливість приєднатись до запущеного процесу, що не було можливим за допомогою dotTrace. Будьте обачні, але приєднання - це не найкращий варіант, оскільки все .NET сповільниться, але це був єдиний спосіб профайлювати .NET-програми, запущені іншими процесами. Особливості мудрості, ANTS та dotTrace були кращими - але, врешті-решт, YourKit виявився досить хорошим.


Починаючи з січня 2012 року, YourKit підвищив ціни на профілера YourKit. Тому цінова перевага вже не може бути дійсною.

0

Якщо ви перебуваєте на ASP.NET MVC, ви можете спробувати MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.