【发布时间】:2012-10-10 06:49:01
【问题描述】:
我有一个 java 程序,它使用包含大量浮点数的对象。 事情是出于优化的原因,我需要将此代码的一部分转换为 C。
为了进行基准测试,我已经在 C 中转换了所需的方法。 事情不是将对象作为输入,而是采用那些浮点数组。
我将这些数组保存在 Java 文件中,以便从我的 C 代码中轻松访问它。 问题是,Java 浮点数和 C 浮点数显然完全不同,我在 C 代码中得到了虚拟值。
我在互联网上没有找到任何可以帮助我完成这项任务的资源。 I did find this,但它适用于 C++,我无权访问这些类。
您有什么建议吗? 我想我可以开发某种转换器,但这可能需要一些时间,而且网上可能有更好的解决方案。
谢谢,
编辑:
我正在使用 DataOutputStream 及其 writeFloat 方法保存浮点数组。
【问题讨论】:
-
为什么不直接使用 JNI/JNA 来连接 Java 和 C?这样您就不必处理文件...
-
你如何在文件中存储你的浮点数组?您是使用 ObjectOutputStream 还是将 java 对象直接写入文件?
-
@nneonneo :我简化了以避免提供无用的信息,但实际的 C 代码稍后将在 GPU 上运行,所以我不确定我能做到这一点:s。
-
即使在 GPU 上运行,您仍然可以使用 JNI。您只需通过 JNI 将浮点数从 Java 传递到 C,然后通过例如从 C 传递到 GPU。 CUDA。
-
@Santosh 因为这里的目标是性能,所以这是一个非常糟糕的主意。
标签: java c floating-point