Як побачити, які частини коду запускаються найчастіше?


11

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

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

Я думаю, найкращим з обох світів була б програма, яка додає кількість часу, який забирає фрагмент коду, включаючи ВСІ часи його запуску (для цього з'ясовуючи, що загалом сповільнює ваш код). Чи є для цього якийсь інструмент?


Чи маєте ви перевагу операційну систему чи мову програмування?
Мавг каже, що повернемо Моніку

Відповіді:


15

Що ви шукаєте, це профілювання :

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

Існує кілька таких додатків. Іноді вони вбудовуються в саму IDE. Netbeans ide - це один із таких інструментів, в який вбудований профілер . введіть тут опис зображення

Ще один такий інструмент - візуальний vm .

введіть тут опис зображення

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

Інший підхід полягає в приєднанні байт-коду Java, щоб повідомити про початок і час зупинки іншій програмі.

Написати профілера не дуже страшно для одного кваліфікованого Java. IBM має статтю про написання власного профілера (з вихідним кодом!). Цей заснований на Java Interactive Profiler .

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

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

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