2013-05-10 22 views
0

我有一个基于iOS设备上的水果引擎的简单国际象棋应用程序。现在我想为Android做一个国际象棋应用程序。好像我有以下选择:c或java中的国际象棋引擎,性能差异?

  • 端口的C水果引擎的Java
  • 在Java中使用另一个国际象棋引擎
  • 采用Android NDK在Java
的C国际象棋引擎和用户界面

我的问题是,假设使用相同的算法,如果将棋引擎从c移植到Java,会不会有任何性能下降?

我可以承受5%或更少的差异(在同一设备上运行的c和java引擎之间)。谢谢。

+1

性能差异(如果有的话)将过多地依赖代码的细节来为这个问题提供任何有意义的答案。 – 2013-05-10 04:26:53

+0

不仅代码的细节,而且用户的硬件设备的规格。有几款iOS设备的数量不到所有Android设备的2%。 – MarsAtomic 2013-05-10 04:39:38

+0

我想知道哪里有两种语言的相关实现比较,如minmax树搜索,Zobrist散列等。 – ohho 2013-05-10 04:41:48

回答

0

如果将棋引擎从c移植到Java,会有任何性能下降吗?

会有退化。多少取决于你的低级Java编程技能有多好。如果你尽可能的翻译代码,它会非常相似。

我可以承受5%或更少的差价。

如果它是10%,它会产生多少差异?如果等待几个月后,手机型号之间的差异可能会达到30%以上,但手机的反应速度会比这更快。

+0

我可以想象,手机上的C/C-In-Java差异比桌面上的C/C-In-Java差异更大我见过的所有基准)..虽然我期望有相同的复杂性界限,但由于移动设备上不太复杂的JIT(或者缺乏*),我还会期望更高的常数因子。因此,如果应该支持的模糊断言是移动(Android)Java/Dalvik实现的经验证据,那么我相信“如果您尽可能接近地翻译代码,它将非常相似”。 – user2246674 2013-05-11 19:21:04

+0

另外,虽然我很喜欢关于器件性能变化(和改进)的观点,但我认为它忽略了基本原理(如果不是最初可能误导了〜5%)的“要求” - 它现在需要运行并且运行在任何特定设备上,速度减慢X%*可能是好的体验和差的体验之间的差异。也就是说,它确实是关于它如何运行(在它所针对的特定设备/硬件上),而不考虑“丢失”的任何百分比性能。测试将显示哪些方法符合目标。 – user2246674 2013-05-11 19:24:58