Які профілі ви використовували під час роботи з програмами .net, і які б ви особливо рекомендували?
Які профілі ви використовували під час роботи з програмами .net, і які б ви особливо рекомендували?
Відповіді:
Я широко використовував 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.
Інші стосуються профілювання продуктивності, але щодо профілювання пам'яті я зараз оцінюю як Scitech .NET Memory Profiler 3.1, так і ANTS Memory Profiler 5.1 (поточні версії станом на вересень 2009 року). Я спробував JetBrains рік чи два тому, і це було не так добре, як ANTS (для профілювання пам'яті), тому я цього разу не турбувався. Якщо читати веб-сайти, схоже, що у нього немає таких же функцій профілювання пам'яті, що й у двох інших.
І ANTS, і профайлер пам'яті Scitech мають функції, які не має інших, тому найкраще буде залежати від ваших уподобань. Взагалі кажучи, Scitech надає більш детальну інформацію, тоді як ANTS - це справді неймовірно при виявленні об'єкта, що протікає. В цілому, я віддаю перевагу ANTS, оскільки він так швидко виявляє можливі витоки.
Ось основні плюси та мінуси кожного з мого досвіду:
Загальні характеристики ANTS і Scitech .NET Profiler
АНТИ
Scitech .NET Profiler пам'яті
Підсумовуючи, я думаю, що ANTS допомагає швидше знайти те, що протікає, тоді як Scitech надає трохи більше детальних відомостей про загальну продуктивність пам’яті додатків та окремих об’єктів, як тільки ви дізнаєтеся, на що звернути увагу (наприклад, стеження стека при створенні). Якщо слід додавати слід стека та відстеження нерозкритих одноразових об'єктів до ANTS, я б не бачив необхідності використовувати щось інше.
Нещодавно я виявив EQATEC Profiler http://www.eqatec.com/tools/profiler . Він працює з більшістю версій .NET і на купі платформ. Він простий у використанні, а частини його безкоштовні, навіть для комерційного використання.
[ Повне розкриття інформації ]
Хоча ще не настільки повнофункціональний, як деякі інші перераховані тут профайли .NET, на ринку з'явилася нова запис JustTrace . Це зроблено Telerik, і його основна мета полягає в тому, щоб зробити простежування / профілювання легшим та швидшим для всіх типів програм (web / Silverlight / desktop).
Якщо ви коли-небудь знаходили профілювання та оптимізацію залякуючими або повільними з іншими інструментами, то JustTrace, можливо, варто переглянути.
Не забувайте nProf - це переважно хороший, безкоштовний профайлер.
Я встановив, що dotTrace Profiler від JetBrains є відмінним інструментом для профілювання .NET, а їх режим ASP.NET - це якість.
ANTS Profiler . Я не користувався багатьма, але я не маю жодних скарг на ANTS. Візуалізація справді корисна.
Автоматизований QA AQTime для синхронізації та SciTech MemProfiler для пам'яті.
Якщо ви шукаєте щось швидке, легке та безкоштовне, http://code.google.com/p/slimtune/, схоже , справить цю роботу добре.
Я працював з JetBrains dotTrace для WinForms та консольних додатків (ще не тестований на ASP.net), і він працює досить добре:
Нещодавно вони також додали "Персональну ліцензію", яка значно дешевша від корпоративної. І все-таки, якщо хтось ще знає кілька дешевих або навіть безкоштовних, я хотів би почути також :-)
Не забувайте про дивовижну програму профайлер пам’яті .net
Це чудово підходить для того, щоб відстежувати, чому у вашої програми .net не вистачає пам’яті.
Я додам, що здатність dotTrace розрізняти сеанси відстеження пам’яті та продуктивності абсолютно неоціненна (ANTS також може мати особливість розрізнення пам’яті, але я не бачив відмінності в роботі).
Можливість запускати сеанс профілювання до та після виправлення помилок або їх покращення, а потім порівнювати результати неймовірно цінно, особливо із спадщиною .NET-додатка для мамонта (як у моєму випадку), коли продуктивність ніколи не була пріоритетною і де можна було знайти вузькі місця. ДУЖЕ нудно. Робота різниці перед і після дозволяє вам побачити зміну кількості викликів для кожного методу та зміну тривалості для кожного методу .
Це корисно не лише під час зміни коду, але і якщо у вас є додаток, який використовує іншу базу даних, скажімо, для кожного клієнта / замовника. Якщо один клієнт скаржиться на повільність, ви можете запустити сеанс профілювання за допомогою своєї бази даних та порівняти результати з «швидкою» базою даних, щоб визначити, які операції сприяють повільності. Звичайно, існує багато інструментів для роботи на базі даних, але іноді я дійсно допомагає бачити показники продуктивності з боку програми (оскільки це ближче до того, що бачить користувач насправді).
Підсумок: dotTrace чудово працює, а розбіжність є неоціненною.
AQTime розумний, але має трохи кривої навчання і не такий простий у використанні, як вбудований в Team Suite
Раніше я використовував профілер, який постачається з командною системою Visual Studio .
Поточний реліз SharpDevelop (3.1.1) має приємний інтегрований профілер. Це досить швидко і дуже добре інтегрується в SharpDevelop IDE та його NUnit бігун. Результати відображаються у гнучкому стилі дерева / списку (використовуйте LINQ для створення власного вибору). Подвійне клацання відображуваного методу перескакує безпосередньо у вихідний код.
Я сумніваюся, що профілер, який постачається з Visual Studio Team System, є найкращим профілером, але я багато разів виявляв, що він досить хороший. Що конкретно вам потрібно понад те, що пропонує VS?
EDIT: На жаль, він доступний лише в командній системі VS, але якщо у вас є доступ, варто перевірити.
Аналізатор продуктивності Intel® VTune ™ для швидкого відбору проб
Я повинен надати вам чудовий інструмент, який я колись використовував. AVICode Interceptor Studio . У моїй попередній компанії ми використовували цей чудовий інструмент для аналізу веб-застосунку ( Це, мабуть, є найбільшим веб-додатком у світі та найбільшим цивільним ІТ-проектом, що коли-небудь робився ). Команда вистави творила чудеса за допомогою цього чудового інструменту. Налаштувати це боляче, але це разова діяльність, і я б сказав, що варто того часу. Ознайомтесь на цій сторінці для отримання детальної інформації.
Спасибі, Джеймс
Для мене SpeedTrace - найкращий інструмент на ринку, оскільки він не тільки допомагає вам знайти вузькі місця у ваших програмах. Це також допомагає вам у вирішенні сценаріїв усунення несправностей, щоб дізнатись, чому ваша програма зазнала збоїв, налаштування не встановлено, ваша програма зависла, продуктивність програми іноді погана, залежно від введення даних, наприклад, для виявлення повільних транзакцій db.
Я нещодавно випробовував JustTrace на Telerik, і хоча це далеко від готового продукту, хлопці йдуть у правильному напрямку.
Профілер NuMega True Time живе в DevPartner Studio від компанії Micro Focus. Він надає детальну інформацію про рівні та способи для .NET-додатків, що вимагають лише PDB, не потрібне джерело (але це допомагає.) Це може розрізняти алгоритмічно важкі підпрограми порівняно з тими, хто з тривалими очікуваннями вводу-виводу використовує наш власний драйвер часу режиму ядра. Версія 10.5 постачається з новою підтримкою 64-процесів 4 лютого 2011 року. Безсоромний штекер: Я працюю на лінійці продуктів DevPartner. Слідкуйте за адресою http://www.DevPartner.com для новин про запуск 10.5.
Відмова: Я - менеджер продуктів для DevPartner в Micro Focus.
Я знайшов безліч проблем у великому додатку C # за допомогою цього .
Зазвичай проблема виникає під час запуску чи відключення, коли плагіни завантажуються, а великі структури даних створюються, знищуються, серіалізуються або десеріалізуються. Часто вони створюються та ініціалізуються не один раз, а обробники змін змінюються кілька разів, що ще більше ускладнює проблему.
У таких випадках програма може бути настільки млявою, що достатньо лише 2 зразків для точного визначення винного методу / функції / майнових сайтів виклику.
Ми вибрали YourKit Profiler для .NET в моїй компанії, оскільки це було найкращим співвідношенням (ціна та особливість). Для невеликої компанії, яка хоче мати гнучкі ліцензії (плаваючі ліцензії), це був ідеальний вибір - ANTS був медаленом сидіння для розробників у той час.
Крім того, це дало нам можливість приєднатись до запущеного процесу, що не було можливим за допомогою dotTrace. Будьте обачні, але приєднання - це не найкращий варіант, оскільки все .NET сповільниться, але це був єдиний спосіб профайлювати .NET-програми, запущені іншими процесами. Особливості мудрості, ANTS та dotTrace були кращими - але, врешті-решт, YourKit виявився досить хорошим.