【发布时间】:2016-08-05 13:29:23
【问题描述】:
我正在编写一个对实时生成的数据进行操作的 java 应用程序。
数据是以每秒大约 30 个浮点数生成的一系列浮点数,我正在搜索数据中的特定模式,并希望在尽可能短的时间内找到并做出反应。
也就是说,我不能让进程等待一些数据缓冲,而是在收到新浮点数后立即对累积的序列进行操作(与以前的浮点数进行比较)
每次分析该系列导致大约5-6个java函数调用。
现在,数据速率为每秒 30 个样本,程序以每秒 180 个函数调用的速度运行!
这个速率是低效的吗?一段时间后会导致堆栈溢出还是对现代硬件安全?如果这是一个非常高的比率,还有什么其他策略可以使用
【问题讨论】:
-
堆栈溢出只有在你不断堆叠方法时才会发生(因此得名),这意味着你必须递归调用函数来实现这一点。
-
比函数调用更有趣的是函数的作用。大部分时间将在那里度过。为什么不做一些性能测量?
-
@GergelyKőrössy 堆栈上的太多函数调用没有足够快地返回可能会填满堆栈并导致溢出
-
只要你不是每秒都在线程中产生你的操作,否则不是因为它是连续的。