Moim celem jest wygenerowanie pseudolosowego ciągu znaków składającego się z 500000 znaków z małego wyboru znaków. To jest moja pętla do dodawania znaków String:Jak mogę zoptymalizować mój kod do generowania ciągów pseudolosowych dla dużej szybkości w Javie?
String alphabet="ABCD";
Random r = new Random();
for (int i = 0; i < 500000; i++) {
this.setCode((this.getCode() == null ? "" : this.getCode())
alphabet.charAt(r.nextInt(alphabet.length())));
}
Unsurprisingly ten jest bardzo powolny, więc szukam sposobów na to, aby wykonać ewentualne> najmniej powolny <.
To zrobiło niesamowitą różnicę, nie wymagając dodatkowej biblioteki. –
W zależności od tego, jakiego rodzaju implementacji używasz do losowania, możesz być w stanie uzyskać lepsze i szybsze wyniki, jeśli nie zależy Ci na synchronizacji, a prędkość jest naprawdę czynnikiem, możesz zamiast tego używać MersenneTwisterFast.java. http://cs.gmu.edu/~sean/research/mersenne/MersenneTwisterFast.java –
Nie używaj 'StringBuilder', jeśli znasz długość z góry, zamiast tego użyj nowego' char [50000] '. Użyj [ThreadLocalRandom] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadLocalRandom.html), aby uzyskać jeszcze większą szybkość. – maaartinus