2016-08-05 108 views
-1

我正在編寫一個運行在實時生成的數據上的java應用程序。每秒多少次函數調用?

數據是以大約每秒30次浮點數生成的一系列浮點數,我正在搜索數據中的特定模式,並希望在儘可能最短的時間內找到並作出反應。

這就是說,我不能保持過程等待一些數據緩衝區,而不是我所積累的系列,一旦操作作爲一個新的浮動收到(與以前的比較吧)

分析系列中的各個時間導致約5-6個Java函數調用。

現在數據速率爲每秒30個樣本,程序以每秒180個函數調用運行!

這個比率是否低效?是否會在某段時間後導致堆棧溢出,或者現代硬件是否安全?如果這是一個非常高的速度,可以使用什麼其他策略

+0

堆棧溢出僅在您繼續堆疊方法(*因此名稱*)時纔會發生,這意味着您必須遞歸調用函數才能實現該功能。 –

+2

函數調用比函數更有趣。大部分時間將花在那裏。你爲什麼不做一些性能測量? – Henry

+0

@GergelyKőrössy太多的函數調用堆棧沒有足夠快的返回速度,可能會導致堆棧溢出並導致溢出 – Allahjane

回答

0

在您的JDK文件夾下的bin中,您可以找到一個名爲jvisualvm.exe的應用程序,它將使您能夠監視幾件事情。你有CPU /堆/類和線程的一般圖。它還爲線程提供了一個狀態概覽,可能對您而言並不是那麼有趣。但是如果發現性能問題,採樣器可能會更深入地瞭解堆棧/堆。

如果你正在主線程上運行你的操作,它可能是你自己處理它的一個選項。