2014-03-06 173 views
0

我有以下代碼,並且想知道哪個是最快的方法來複制_zobrist_hashEnPassant陣列?快速複製多維陣列

internal void InitHash() 
{ 
    Int32 i; 
    for (i = 0; i < 2; i++) 
     for (Int32 j = 0; j < 6; j++) 
      for (Int32 k = 0; k < 64; k++) 
       _zobrist[ i, j, k ] = HashRand(); 

    for (i = 0; i < 64; ++i) 
     _hashEnPassant[ i ] = HashRand(); 
} 

其原因是這是我的國際象棋引擎創建多個分析板和而不是從頭重新創建新的主板我基本上覆制現有的電路板。我遇到的問題是調用InitHash()方法或者只是簡單複製太慢。

我看了看this,我不知道如何修改它以使用UInt64類型。

+0

什麼是HashRand()?你真的需要叫它832次嗎? – Max

回答

0

從這裏:http://msdn.microsoft.com/en-us/library/z50k9bft%28v=vs.110%29.aspx

如果看起來像你只需要複製使用Array.com

Array.Copy(myObjArray, 0, myIntArray, 0, numElements); 

中包含numElements的數組元素的總數將是2 * 6 * 64?

只是爲了顯示來自網站和值的API聲明可以使用:

public static void Copy(
    Array sourceArray, 
    int sourceIndex, 
    Array destinationArray, 
    int destinationIndex, 
    int length 
) 

值:

sourceIndex = 0 
destinationIndex = 0 
length = x*y*z (array dimension lengths)