0

不要な場合は新しいインスタンスを作成したくないということを最近読みました。それが何を言っているのか理解できたかどうかはわかりません。問題は、LogCat でこれが繰り返されたことです。

08-09 17:12:11.300: D/dalvikvm(19620): GC_FOR_ALLOC freed 2281K, 23% free 9365K/12048K, paused 12ms, total 12ms

だから、この方法を持っている方が良いですか:

public int rand(int i) {
    int rand = new Random().nextInt(i);
    return rand;
}

この方法を使用するよりも:

public int rand(int i) {
    return new Random().nextInt(i);
}

rand() を頻繁に呼び出している場合は? なぜですか、そうでないのですか?新人を助けてくれてありがとう!

4

4 に答える 4

4

これら 2 つのメソッドは、同一のバイトコードを生成するに違いありません。実際に達成したいのは、シードを常にリセットしないように、のインスタンスを 1 つ持ち、そのインスタンスからRandom呼び出すだけです。nextInts

于 2013-08-09T21:27:02.740 に答える
1

ここでは、パフォーマンスは単なる付随的なものです。呼び出しごとに新しいRandomオブジェクトを作成している場合、時間を無駄にするだけでなく、乱数をまったく取得していません。Randomジェネレーターを作成するには、一度だけオブジェクトを作成する必要があります。その後、さまざまな関数を呼び出すと、next...そのジェネレーターから乱数が生成されます。それが乱数発生器の仕組みです。

于 2013-08-10T02:08:55.867 に答える