Как профилирование отличается от входа?

класс для foo

@XmlRootElement()
public class Foo {

   private customElement CustomElement;

   public CustomElement getCustomElement(){
       return customElement;
   }

   @XmlElement
   public void setCustomElement(CustomElement customElement){
       this.customElement = customElement;
   }
}

класс для пользовательского элемента

@XmlAccessorType(XmlAccessType.FIELD)
public class CustomElement {

    @XmlAttribute
    private String bar;

    @XmlValue
    private String baz

    // set getters and setters
}
7
задан Brian R. Bondy 28 October 2008 в 03:30
поделиться

8 ответов

Вход говорит Вам, что произошло. Это является большим для судебной экспертизы и отладки.

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

Профилирование обычно работает на уровне строки кода, вызова функции или иногда файла. Для каждого уровня это может обычно говорить Вам:

  • Сколько раз выполнялась единица. Обычно менее важно оптимизировать редко используемый код, чем код, который выполняет миллионы времен. Одним исключением является код, который делает пользователя (или другой процесс) ожидают его для завершения.

  • Сколько раз было взято ответвление, скажите в if или switch оператор. Снова, Вы обычно заботитесь больше всего об оптимизации часто используемого кода.

  • Сколько времени было проведено в конкретной функции. Предупреждение: даже опытные разработчики часто удивляются этими результатами. Очень трудно предсказать, где Ваши "приемники времени".

  • Сколько времени было проведено в функции и всех функциях, вызванных в той функции. Возможно, это не сама функция, но ее дети, та оптимизация потребности.

  • Сколько раз единицу назвала каждая вызывающая сторона. Можно найти, что конкретная функция вызвана, прежде всего, от неожиданного места.

Вооруженный данными от хорошего профилировщика, можно часто получать существенные улучшения в производительности с относительно небольшим усилием.

20
ответ дан 6 December 2019 в 06:04
поделиться

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

Вход, с другой стороны, является функцией аудита. Вы хотите видеть то, что сделала программа, в то время как она работала. Это более используется для отладки, чем производительность.

2
ответ дан 6 December 2019 в 06:04
поделиться

Профилирование об определении производительности относительно функции/вызовов метода, например.

  • Время проведено в функциях
  • Время, проведенное в функциях + время, проведено в дочерних функциях
  • Количество раз конкретная функция называют

Вся эта мысль представить заставляет хороший обзор системы определять, где оптимизации могут быть сделаны. Если Вы знаете, что конкретная функция вызвана еще 20 раз, чем 2-я самая большая высоко вызванная функция, Вы знаете, когда сфокусировать Ваши усилия по оптимизации.

Это также показывает Вам, где не провести Ваше время. Вы не хотите проводить день, оптимизируя функцию, которая только вызвана однажды в час. Вы хотите сфокусировать свое время на оптимизации тех функций, которые вызваны многократно в секунду.

Вход, в моем понимании, просто отслеживает то, что назвали (но без подробных метаданных, связанных с каждым вызовом).

Профильные библиотеки такой столь Рациональный Определяют количество работы путем оснащения кода для сбора статистики, как это работает. Это окажет неявное влияние производительности, но это будет относительно через систему.

3
ответ дан 6 December 2019 в 06:04
поделиться

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

Вход хранит информацию для более позднего использования, информация, которая может коснуться профилирования, но не обязательно. Это может просто быть должно зарегистрировать то, что произошло.

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

1
ответ дан 6 December 2019 в 06:04
поделиться

Вход записывает то, что сделано в целях аудита или поиска и устранения неисправностей. Профилирование, я сказал бы, является методом измерительной производительности. Профилирование может быть сделано путем входа метрик производительности, или оно может быть сделано при помощи специализированных инструментов или утилит для исследования состояния системы, когда оно работает.

1
ответ дан 6 December 2019 в 06:04
поделиться

Вход говорит Вам, сколько вопросов Вы отправили на stackoverflow.

Профилирование говорит Вам, сколько времени оно берет для регистрации каждого вопроса, и сколько из рабочего дня Вы тратите здесь.

1
ответ дан 6 December 2019 в 06:04
поделиться

Операторы журнала обычно пишутся в самом исходном коде, тогда как с профилированием можно изменить код после того, как это компилируется и оснащено затем и только для профильной сессии (т.е. нет никакого профильного кода, существующего ни в какой версии самой сборки.) и производительность индикатора в режиме реального времени или это может быть выбрано так, это может отследить производительность на менее детализированном, но менее навязчивом пути.

1
ответ дан 6 December 2019 в 06:04
поделиться

Предыдущие ответы являются правильными.

Однако, по моему скромному мнению, профилировщики являются большим количеством дыма, чем оружие, и я держал пари, что это заставляет некоторые стрелки быть нажатыми.

Если Вы хотите знать, за какое количество времени функция ответственна, необходимо знать и сколько раз это называют и сколько времени это берет, когда это называют. Один из них без другого бесполезен.

Даже если это говорит Вам обоим о них, это не говорит Вам, какие операторы в функции ответственны в течение времени. Они говорят Вам много материала, как аннотируемые графы вызовов и этажерка, но все еще в форме большого количества подсказок необходимо ломать голову, высказывая предположения звучать более "информированными".

Затем они говорят о том, насколько "точный" числа. Делает хорошую презентацию, но не закрепляет проблему.

То, что они могли сделать (и они не делают), является точкой в конкретных операторах или инструкциях, и сказать

Этот точный оператор прямо здесь, если бы Вы могли бы избавиться от него, сохранил бы Вас X % общего времени выполнения.

и вид те, которые X.

Если действительно необходимо решить проблему производительности, в именно это Вы нуждаетесь, и можно легко получить ее сами.Послушайте:
        Как Оптимизировать Производительность Вашей Программы

1
ответ дан 6 December 2019 в 06:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: