我正在设计一个使用Java 6的工具,它可以读取来自医疗设备的数据。
每个医疗设备制造商都实施自己的固件/协议。供应商(像我一样)编写自己的接口,使用制造商的固件命令从医疗设备中获取数据。大多数固件都会以一种神秘的方式输出数据,因此接收数据的厂商应该通过对其进行一些计算来扩展数据,以便显示出真正的值。
可以肯定的是,医疗数据的精确性和财务数据的精确性一样重要。
我得出的结论是使用BigDecimal进行所有的数值计算并存储最终值。我几乎每秒钟都会收到一组新的数据,这意味着,我将每秒钟进行计算并更新同一组值。每呼吸一次,从呼吸机传来的数据。
由于BigDecimal是不可变的,所以我担心每秒在堆中生成的对象数量。特别是因为这个工具将不得不扩展到读取来自50个设备的数据在同一时间。
我可以增加堆的大小,但是这里还有我的问题.
问题
发布于 2011-04-19 19:46:05
在您得出BigDecimal不适合您的需求这一结论之前,我建议您实际分析一下您的场景。这不是一个预先得出的结论,即不变的本性将对您的场景产生重大影响。现代JVM非常擅长分配和销毁大量的对象。
发布于 2011-04-19 19:50:25
double基元类型提供了大约16位的十进制精度,为什么不直接使用呢?那你就不会碰那堆东西了。
发布于 2011-04-19 21:02:33
垃圾收集器应该在清理对象方面做得足够好,但是如果您仍然想要不变的数字,您可以使用反射来访问BigDecimal的回数据,这样您就可以为BigDecimal创建一个包装类来完成您想做的事情。
https://stackoverflow.com/questions/5721594
复制相似问题