M***@ptt.cc
2007-05-22 10:31:39 UTC
目前的程式需要處理1000K以上的node,
這部份的運作程式如下
ArrayList<Integer> originalRandomArray = new ArrayList<Integer>();
protected ArrayList<Integer> randomArray = new ArrayList<Integer>();
public void GenerateRandomArray( int nodeNumber )
{
originalRandomArray.clear(); // initialize;
for( int i = 0 ; i < nodeNumber; i++ )
{
originalRandomArray.add( i );
}
Collections.shuffle( originalRandomArray );
randomArray.clear(); // initialize
for( int i = 0 ; i < originalRandomArray.size() ; i++ )
{
if( i < nodeNumber * CHANCE_MOVE )
{
randomArray.add( originalRandomArray.get( i ) );
}
}
}
這部份code的目的是將originalRandomArray裡取出來的CHANCE_MOVE%個nodes存到
randomArray去. 但整個程式在nodeNumber = 1000000時, 處理時間多了2小時
(原本是1小時, 但是是用簡單的方法做出一個不完全的random).
請問有辦法改進效率嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.180.59
※ 編輯: Mewra 來自: 123.193.180.59 (05/22 18:31)
這部份的運作程式如下
ArrayList<Integer> originalRandomArray = new ArrayList<Integer>();
protected ArrayList<Integer> randomArray = new ArrayList<Integer>();
public void GenerateRandomArray( int nodeNumber )
{
originalRandomArray.clear(); // initialize;
for( int i = 0 ; i < nodeNumber; i++ )
{
originalRandomArray.add( i );
}
Collections.shuffle( originalRandomArray );
randomArray.clear(); // initialize
for( int i = 0 ; i < originalRandomArray.size() ; i++ )
{
if( i < nodeNumber * CHANCE_MOVE )
{
randomArray.add( originalRandomArray.get( i ) );
}
}
}
這部份code的目的是將originalRandomArray裡取出來的CHANCE_MOVE%個nodes存到
randomArray去. 但整個程式在nodeNumber = 1000000時, 處理時間多了2小時
(原本是1小時, 但是是用簡單的方法做出一個不完全的random).
請問有辦法改進效率嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.180.59
※ 編輯: Mewra 來自: 123.193.180.59 (05/22 18:31)