Странные результаты sampling profiling
Профилирую программу с помощью YourKit, JProfiler (в режиме sampling) и метода "запустить и поделать thread dumps".
Результат: пару десятков процентов времени, согласно всем трем методам, "занимает" крошечный метод, который вообще ничего толком ни делает - ни синхронизации, ни циклов, ни блокирующих вызовов, ничего - буквально несколько арифметических операций; по сравнению с окружающим его кодом это ничто. Более того, после его удаления видимая производительность программы не изменилась.
Я предполагаю, что объяснение этому может быть в том, что JVM разрешает брать стектрейсы ниток только в определенные моменты времени, и метод почему-то оказывается одним из самых распространенных таких моментов, но это кажется мне странным - метод ничем особо не выделяется.
Как можно объяснить происходящее? Что и как еще стоит померить?
Результат: пару десятков процентов времени, согласно всем трем методам, "занимает" крошечный метод, который вообще ничего толком ни делает - ни синхронизации, ни циклов, ни блокирующих вызовов, ничего - буквально несколько арифметических операций; по сравнению с окружающим его кодом это ничто. Более того, после его удаления видимая производительность программы не изменилась.
Я предполагаю, что объяснение этому может быть в том, что JVM разрешает брать стектрейсы ниток только в определенные моменты времени, и метод почему-то оказывается одним из самых распространенных таких моментов, но это кажется мне странным - метод ничем особо не выделяется.
Как можно объяснить происходящее? Что и как еще стоит померить?
