【发布时间】:2023-04-03 18:38:02
【问题描述】:
我有一个基于 iOS 设备上 Fruit 引擎的简单国际象棋应用程序。现在我想为Android做一个国际象棋应用程序。看来我有以下选择:
- 将 c Fruit 引擎移植到 Java
- 在 Java 中使用另一个国际象棋引擎
- 在 Java 中将 Android NDK 用于 c 国际象棋引擎和 UI
我的问题是,假设使用相同的算法,如果将国际象棋引擎从 c 移植到 Java,性能会下降吗?
我可以承受 5% 或更少的差异(在同一设备上运行的 c 和 java 引擎之间)。谢谢。
【问题讨论】:
-
性能差异(如果有的话)将很大程度上取决于代码的细节,无法为这个问题提供任何有意义的答案。
-
不仅是代码的细节,还有用户硬件设备的规格。有几款 iOS 设备不到所有 Android 设备的 2%。
-
我想知道两种语言的相关实现在哪里比较,例如最小最大树搜索、Zobrist 哈希等。
-
@MarsAtomic 我说的是在同一个 Android 设备上运行的两个程序(一个在 c 中,一个在 java 中)
-
“移植引擎”或“按原样使用引擎”嗯..我知道我会选择哪个。只是说。如果有一些仅限 Java 的选项,我会先尝试它们,如果它们足够,只需使用它们以避免创建 NDK wrapper - 根据需要,您可以编写一个小的外观,以便以后可以“不那么痛苦地”更改引擎。 在任何情况下,我都不会将引擎移植到其他语言。