【发布时间】:2010-07-13 14:44:20
【问题描述】:
我正在我的客户端探索一个解决方案,我们必须从我们的 C++ 应用程序调用一个在 C# 和 Java 中都可用的 API。我们希望这是一个跨平台应用程序(PC 和 Mac),因此首选 Java,但性能更重要。我一直在尝试对 C++ 调用 C# 与 Java 的性能进行一些研究,但没有找到任何可靠的信息。思路是使用 JNI 调用 Java API 或托管 C++ 调用 C# API。
有没有人知道什么是更好的性能明智的信息或见解?这些调用可能会被大量执行,因此音量确实会发挥作用。
谢谢!
【问题讨论】:
-
afaik 你不能使用 JNI 从 C/C++ 调用 Java。反过来说:JNI 使您能够调用用 C/C++ 编写的库。
-
JNI 还允许您实例化 JVM 并从 C 调用它
-
您可以从 C++ 调用 Java,但是如果性能很重要,请减少调用。大多数任务都可以重组,从而减少调用次数。如果您的代码编写得很好,那么这些调用的成本应该不会很大。对于 JNI,成本可能约为 30 个时钟周期,但这实际上取决于您在做什么。
-
只要避开 System.Windows.Forms.* 子空间,您也可以在 Mac 上使用 C#。微软从一开始就提供了它并自己使用它。既然你关心性能,你不能做 GUI 类型的代码,为什么不使用你觉得舒服的任何一个。
标签: c# java c++ java-native-interface managed-c++