powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Скорость выполнения кода JAVA
18 сообщений из 18, страница 1 из 1
Скорость выполнения кода JAVA
    #34762007
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как определить скорсть выполнения определенного участка кода написанного на JAVA?
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34762018
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 long  s =  new  Date().getLong();

....
код

 long  e =  new  Date().getLong();

 long  vremiaVipolneniaCodaNaJavaVMilisecundah = e-s;
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34762056
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще мне посоветовали воспользоватся "профайлером", а что это и где о нем почитать не знаю. подскажите!
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34762213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Профайлер
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34762272
Anarion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.google.ru/search?q=java+profiler&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34762472
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Профайлеры - г.вно.
Потому что:
1. работают через нативные интерфейсы JVMTI/JVMPI. Последний особенно ресурсоемкий.
2. их влияние на работу самой JVM, чаще всего, значительно.

единственный более-менее правильный способ измерить затраченное время - дергать System.currentTimeMillis()/System.nanoTime().

дальше. то что ты получишь в результате вызовов, в общем случае, не показатель скорости выполнения Java кода . Потому что есть такая замечательная штука как JIT. Как это влияет на время выполнения - тынц .
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34763012
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН дал верный ответ. После этого, топ можно закрыть, но автора, очевидно интересует нечто большее, чем замер времени ИМХО.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34763034
Фотография железный пони
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 long  s =  new  Date().getLong();

....
код

 long  e =  new  Date().getLong();

 long  vremiaVipolneniaCodaNaJavaVMilisecundah = e-s;
прям гетЛонг?
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34763142
smbdy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
System.currentTimeMillis()
быстрее чем с датой :)
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34763530
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton... автора, очевидно интересует нечто большее, чем замер времени ИМХО.

Верно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34763888
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smbdySystem.currentTimeMillis()
быстрее чем с датой :)
Код: plaintext
1.
2.
3.
4.
 long  lBegin = System.currentTimeMillis();
//...some code
 long  lEnd = System.currentTimeMillis();
 long  lDelta = lEnd - lBegin;
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34764001
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic mayton... автора, очевидно интересует нечто большее, чем замер времени ИМХО.

Верно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи.

Тогда профайлер с этим справится ничуть не хуже измерения руками.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34764398
Vetic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz
Тогда профайлер с этим справится ничуть не хуже измерения руками.

А оправдано ли его применение тогда вообще ? Как я понял вариана с замером времени вполне может хватить на первое время (до изучения работы профайлера). Так ли это, и на сколько обекктивным будет результат например при сравнении работы малого количества сторк (например в разных вариантах простенького цикла);
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34764469
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetic Blazkowicz
Тогда профайлер с этим справится ничуть не хуже измерения руками.

А оправдано ли его применение тогда вообще ? Как я понял вариана с замером времени вполне может хватить на первое время (до изучения работы профайлера). Так ли это, и на сколько обекктивным будет результат например при сравнении работы малого количества сторк (например в разных вариантах простенького цикла);

Обойтсь систем-аутами с замерами времени можно только небольшом количестве случаев.
Н-р, когда тестируются алгоритмы или другие самодостаточные кусочки кода.

Как только возникает необходимость выявить места, где падает производительность, в крупном приложении, подход с систем-аутами даёт сбой. Причин тому несколько.
1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :))

2. Таким образом очень трудно собрать статистику сколько времени провело приложение в конкретном методе, т.к. метод может вызываться разными путями. Считать в столбик значение полученные в консоле - не самый умный способ занять своё время.


Профайлер, хоть и замедляет время работы приложния и может оказывать влияние на реальное время выполнения различных методов, в целом позволяет очень точно сказать, какой фрагмент кода требует оптипизации. При этом экономится большее количество времени разработчика (см. п 1 и 2).
Yourkit profiler - the best.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34764519
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeticВерно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи.
в общем виде задача не разрешима. даже замерами времени. получим очень точное число которое ничего не говорит как о скорости в тестовом запуске так и будущей работе проги в реальных условиях. откуда вы знаете что делает ваша многозадачная ОС в это время?

если нужно проэстимэйтить один короткий кусок считайте милисекунды, выводы делайте только по воспроизводящимся разницам времени работы на порядок

если нужно анализировать целую прогу учитесь пользоваться профилятором. опять же точность по секундам из него не получить. но например узнать что этот алгм отжирает на 40% больше процессорного времени чем другой можно
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34766275
Фотография железный пони
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :))injection оберегает от расстановки системаутов по всему коду.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34767413
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
железный пони NotGonnaGetUs1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :))injection оберегает от расстановки системаутов по всему коду.

Не помогает. Injection'ы тоже нужно уметь расставить.

1. Логировать каждый метод - сметроубийство.

2. Фильтровать определённые методы - заколебёшься. Нужно знать досканально весь код, чтобы сразу понять кого считать - кого нет.

3. Методы бывают разной длинны. Вклад во время выполнения при инжекции в void inc() { i++; } и void foo() { *connect db* } - разный. В итоге сведения могут быть не актуальными.

4. Опять-таки - кто будет складывать время проведённой в методе вызываемом из разных точек?
А если нужно отследить вызовы только из подмножества этих точек? А чтобы при этом не проводить заново тестовые замеры?

5. Каждое ли java app пишется с поддержкой AOP?

Вывод:
Если как-то и можно обойтись инжекшинами, то придётся тратить время на разработку собственного велосипеда. В каких-то редких случаяех - это возможно оправдано. Во всех остальных - профайлер сильно экономит время.
...
Рейтинг: 0 / 0
Скорость выполнения кода JAVA
    #34767617
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может написать тест в TestNG c @BeforeMethod @AfterMethod

имхо purposeful
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Скорость выполнения кода JAVA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]