|
|
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Как определить скорсть выполнения определенного участка кода написанного на JAVA? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 15:49:06 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 15:51:19 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Еще мне посоветовали воспользоватся "профайлером", а что это и где о нем почитать не знаю. подскажите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 15:58:27 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Профайлер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:26:07 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
http://www.google.ru/search?q=java+profiler&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:39:30 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Профайлеры - г.вно. Потому что: 1. работают через нативные интерфейсы JVMTI/JVMPI. Последний особенно ресурсоемкий. 2. их влияние на работу самой JVM, чаще всего, значительно. единственный более-менее правильный способ измерить затраченное время - дергать System.currentTimeMillis()/System.nanoTime(). дальше. то что ты получишь в результате вызовов, в общем случае, не показатель скорости выполнения Java кода . Потому что есть такая замечательная штука как JIT. Как это влияет на время выполнения - тынц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 17:14:47 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
ТимоН дал верный ответ. После этого, топ можно закрыть, но автора, очевидно интересует нечто большее, чем замер времени ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 21:13:45 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
ТимоН Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 21:32:51 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
System.currentTimeMillis() быстрее чем с датой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 23:12:39 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
mayton... автора, очевидно интересует нечто большее, чем замер времени ИМХО. Верно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 10:12:07 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
smbdySystem.currentTimeMillis() быстрее чем с датой :) Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:32:45 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Vetic mayton... автора, очевидно интересует нечто большее, чем замер времени ИМХО. Верно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи. Тогда профайлер с этим справится ничуть не хуже измерения руками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:53:13 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Тогда профайлер с этим справится ничуть не хуже измерения руками. А оправдано ли его применение тогда вообще ? Как я понял вариана с замером времени вполне может хватить на первое время (до изучения работы профайлера). Так ли это, и на сколько обекктивным будет результат например при сравнении работы малого количества сторк (например в разных вариантах простенького цикла); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 13:14:27 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
Vetic Blazkowicz Тогда профайлер с этим справится ничуть не хуже измерения руками. А оправдано ли его применение тогда вообще ? Как я понял вариана с замером времени вполне может хватить на первое время (до изучения работы профайлера). Так ли это, и на сколько обекктивным будет результат например при сравнении работы малого количества сторк (например в разных вариантах простенького цикла); Обойтсь систем-аутами с замерами времени можно только небольшом количестве случаев. Н-р, когда тестируются алгоритмы или другие самодостаточные кусочки кода. Как только возникает необходимость выявить места, где падает производительность, в крупном приложении, подход с систем-аутами даёт сбой. Причин тому несколько. 1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :)) 2. Таким образом очень трудно собрать статистику сколько времени провело приложение в конкретном методе, т.к. метод может вызываться разными путями. Считать в столбик значение полученные в консоле - не самый умный способ занять своё время. Профайлер, хоть и замедляет время работы приложния и может оказывать влияние на реальное время выполнения различных методов, в целом позволяет очень точно сказать, какой фрагмент кода требует оптипизации. При этом экономится большее количество времени разработчика (см. п 1 и 2). Yourkit profiler - the best. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 13:36:15 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
VeticВерно! Задача сосстоит в том чтобы сравнить скорость работы разных методов решения одной и той же задачи. в общем виде задача не разрешима. даже замерами времени. получим очень точное число которое ничего не говорит как о скорости в тестовом запуске так и будущей работе проги в реальных условиях. откуда вы знаете что делает ваша многозадачная ОС в это время? если нужно проэстимэйтить один короткий кусок считайте милисекунды, выводы делайте только по воспроизводящимся разницам времени работы на порядок если нужно анализировать целую прогу учитесь пользоваться профилятором. опять же точность по секундам из него не получить. но например узнать что этот алгм отжирает на 40% больше процессорного времени чем другой можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 13:46:17 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :))injection оберегает от расстановки системаутов по всему коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:36:53 |
|
||
|
Скорость выполнения кода JAVA
|
|||
|---|---|---|---|
|
#18+
железный пони NotGonnaGetUs1. Придётся потратить много времени на расстановку систем аутов по всему коду. (цикл "поставили аут-собрали-запустили-потестировали-появилась мысль" может занимать от 10 до 30 минут, а повторяться он будет покрайней мере раз 10 :))injection оберегает от расстановки системаутов по всему коду. Не помогает. Injection'ы тоже нужно уметь расставить. 1. Логировать каждый метод - сметроубийство. 2. Фильтровать определённые методы - заколебёшься. Нужно знать досканально весь код, чтобы сразу понять кого считать - кого нет. 3. Методы бывают разной длинны. Вклад во время выполнения при инжекции в void inc() { i++; } и void foo() { *connect db* } - разный. В итоге сведения могут быть не актуальными. 4. Опять-таки - кто будет складывать время проведённой в методе вызываемом из разных точек? А если нужно отследить вызовы только из подмножества этих точек? А чтобы при этом не проводить заново тестовые замеры? 5. Каждое ли java app пишется с поддержкой AOP? Вывод: Если как-то и можно обойтись инжекшинами, то придётся тратить время на разработку собственного велосипеда. В каких-то редких случаяех - это возможно оправдано. Во всех остальных - профайлер сильно экономит время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:26:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34762272&tid=2144758]: |
0ms |
get settings: |
18ms |
get forum list: |
27ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
75ms |
get topic data: |
27ms |
get forum data: |
7ms |
get page messages: |
115ms |
get tp. blocked users: |
3ms |
| others: | 350ms |
| total: | 636ms |

| 0 / 0 |
