2015-10-28 4 views
-1

Я хотел бы, чтобы измерить загрузку процессора в пределах приложения Java, напримеркак измерить использование центрального процессора метода внутри Java программы

System.out.println("...") 

применения HelloWorld. Есть идеи? Я не хочу измерять использование ЦП всего приложения, а только методы в приложении.

Есть ли способ сопоставить общее время выполнения приложения с использованием ЦП всего приложения?

+0

Этот вопрос немного тупой, потому что может быть сразу несколько методов. Методы профилирования, которые я использую, ориентированы на использование всего приложения. Вы можете узнать, сколько времени требуется для оценки метода, и это может быть связано с использованием ЦП. –

+0

Хорошо. Как только я измерил время выполнения метода (например, 'System.out.println (« ... »)), как мне сопоставить время, измеренное для использования ЦП? –

+0

Можете ли вы уточнить свой вопрос, почему вы хотите это сделать? Даже если вы можете увидеть, что может произойти при всплеске CPU при выполнении одного метода, это не обязательно будет полезной точкой данных для тестирования нагрузки вашего общего приложения. –

ответ

1

На мой взгляд, нет никакого смысла в профилировании отдельных методов. Потому что a) очень легко определить методы хаоса ресурсов (т. Е. Если вам нужно перебирать 10000 входных значений, чтобы найти только 100 действительных значений, которые вы хотите вывести, то очевидно, что вы неэффективны и не тратите время процессора на 9900 бесполезные итерации), и б) ключом эффективного дизайна является предвидеть ресурс hog, и, опять же, используя тот же пример, что и в пункте а, разработчик должен найти более эффективный способ решения проблемы, используя более компактные и быстрые данные структуры или просто найти способ обрезать ненужные данные из метода.

EDIT: И нет, нет возможности сопоставить время выполнения и использование процессора, благодаря JAV JIT и тому факту, что он использует сборщик мусора автономно.

Смежные вопросы