2016-08-05 116 views
-1

我正在编写一个运行在实时生成的数据上的java应用程序。每秒多少次函数调用?

数据是以大约每秒30次浮点数生成的一系列浮点数,我正在搜索数据中的特定模式,并希望在尽可能最短的时间内找到并作出反应。

这就是说,我不能保持过程等待一些数据缓冲区,而不是我所积累的系列,一旦操作作为一个新的浮动收到(与以前的比较吧)

分析系列中的各个时间导致约5-6个Java函数调用。

现在数据速率为每秒30个样本,程序以每秒180个函数调用运行!

这个比率是否低效?是否会在某段时间后导致堆栈溢出,或者现代硬件是否安全?如果这是一个非常高的速度,可以使用什么其他策略

+0

堆栈溢出仅在您继续堆叠方法(*因此名称*)时才会发生,这意味着您必须递归调用函数才能实现该功能。 –

+2

函数调用比函数更有趣。大部分时间将花在那里。你为什么不做一些性能测量? – Henry

+0

@GergelyKőrössy太多的函数调用堆栈没有足够快的返回速度,可能会导致堆栈溢出并导致溢出 – Allahjane

回答

0

在您的JDK文件夹下的bin中,您可以找到一个名为jvisualvm.exe的应用程序,它将使您能够监视几件事情。你有CPU /堆/类和线程的一般图。它还为线程提供了一个状态概览,可能对您而言并不是那么有趣。但是如果发现性能问题,采样器可能会更深入地了解堆栈/堆。

如果你正在主线程上运行你的操作,它可能是你自己处理它的一个选项。