Комментарии 9
Bernard Goossens уже несколько лет пилит идею профайлера, который будет выдавать всегда повторимые результаты времени выполнения при одинаковых входных данных и любом количестве перезапусков. Идея в том, чтобы запускать программу на эмуляторе процессора, который аккуратно будет отчитываться в логи. В этом случае убирается воздействие кода операционной системы, который выполняется параллельно.
Пока что только ARM архитектура поддерживается.
Подозреваю, аналогичным решением можно и остальное профайлить гораздло более суровым методом
Ну можно как минимум hardware performance counters заиспользовать, они стабильнее. Количество выполненных инструкций, например, считать. Хотя суперстабильности всё равно не будет. JIT-компилятор в Java, например, легко выдаст неустойчивый результат в зависимости от гонки между потоками. То есть гонка на ранней стадии работы программы повлияет на сгенерированный ассемблерный код, который будет с вами до конца работы программы и может дать вполне ощутимую разницу в производительности.
А тут ещё в IO многое упирается. На рамдиске наверняка будут существенно другие результаты. Поэтому замеры чисто процессорного времени непрактичны.
О, DrJava. Забавная поделка, никогда не слышал о ней.
jEdit, Java8, Swing
Тест 1
DiskIO: 58.906MB WorkingSetSize: 50.844MB PagefileUsage: 59.063MB
DiskIO: 61.371MB WorkingSetSize: 52.121MB PagefileUsage: 79.465MB
Starting time is 5577.73 ms Повторный запуск: 2917.75 ms
Тест 2
DiskIO: 58.496MB WorkingSetSize: 51.059MB PagefileUsage: 59.078MB
Full run time is 5420.59 ms Повторный запуск: 2581.902 ms
Компактнее и быстрее, чем DrJava
Eclipse на swt писан, который весь UI делегирует нативным библиотекам. А вот Netbeans/Idea — это свинговые приложения.
Жирные программы — изучаем фактор памяти часть В