Schnelle Zufallszahlen!

Die Herausforderung für heute: Den Zufallszahlengenerator beschleunigen. Der Plan ist, das Multicore Package dafür zu benutzen…

Technik:

  • Apple Macbook Air, Intel Core i5 1,7 GHZ, 2 Kerne, 4 Threads
  • 4 GB RAM

Aufgabe:

  • Erzeuge 300.000.000 Zufallszahlen.

Alternativen:

  1. Plain Vanilla „sample“:
    > my.sims<-300000000
    > system.time(Rnd<-sample(1000,size=my.sims,replace=TRUE))
           User      System verstrichen
          4.852       0.524       5.503  
  2. Zufallszahlen mit „lapply“ als Vorbereitung auf Schritt 3:
    > my.sims<-300000000
    > system.time(Rnd<-lapply(1000,sample,my.sims,replace=TRUE))
           User      System verstrichen
          5.573       0.831       7.471
  3. Zufallszahlen mit „mclapply“ aus dem Package multicore:
    > require(multicore)
    > my.cores<-4
    > options(cores=my.cores)
    > my.sims<-300000000/my.cores
    > x<-list(rep(1000,my.cores))
    > system.time(Rnd<-unlist(mclapply(x,sample,my.sims,replace=TRUE)))
           User      System verstrichen
          2.506       0.849       4.847  

Ergebnis:

Beschleunigung um 11,9%. Warum die Beschleunigung nicht größer ist, ist mir ein Rätsel…

Ein Gedanke zu „Schnelle Zufallszahlen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert