2013-05-10 20 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