2016-08-05 3 views
-1

Я пишу приложение java, которое работает с данными, генерируемыми в реальном времени.Сколько вызовов функций в секунду?

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

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

Анализ серии каждый раз приводит к около 5-6 вызовов функции java.

Теперь со скоростью передачи данных 30 выборок в секунду программа работает с 180 вызовами функций в секунду!

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

+0

Переполнение стека происходит только в том случае, если вы продолжаете складывать методы (* следовательно, имя *), что означает, что вам нужно будет вызвать функции рекурсивно для достижения этого. –

+2

Более интересным, чем вызовы функций, являются функции. Там будет больше времени. Почему бы вам просто не сделать некоторые измерения производительности? – Henry

+0

@ GergelyKőrössy слишком много вызовов функций в стеке, не возвращающемся достаточно быстро, может заполнить стек и вызвать переполнение, а также – Allahjane

ответ

0

В вашей папке JDK под корзиной вы найдете приложение jvisualvm.exe, которое позволит вам отслеживать несколько вещей. У вас есть общие графики для CPU/Heap/Classes and Threads. Он также предоставляет обзор состояния для Threads, который, возможно, не так уж и интересен для вас. Но сэмплер может глубже изучить стек/кучу, если вы найдете проблемы с производительностью.

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

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