Ho uno script scritto in Ruby che ha raggiunto il limite massimo del processore Xeon del mio server per le ultime 2 ore. Dal momento che al momento utilizza solo 1 di quattro possibili core, voglio provare a riscrivere lo script per sfruttare tutti e quattro i core.
Posso usare il metodo .each_slice (n) sull'array che contiene i miei dati, ma sono curioso di sapere quale sarebbe il modo migliore / più efficace per scrivere questi dati in un file. Sembra che io abbia un paio di opzioni.
-
Passa l'oggetto file alle funzioni chiamate dalla funzione Thread.new (presumo che sia legale in ruby?) e facciali scrivere come meglio credi.
-
Ogni funzione memorizza i risultati negli array, restituisce l'array al completamento e lascia che il programma principale scriva sul disco.
-
Passa lo stesso oggetto array a ciascun elemento e aggiungilo a tutti, quindi ordinalo.
La mia ipotesi è che, sebbene 2 probabilmente utilizzi più memoria, sarà di gran lunga il metodo più efficiente. C'è un modo diverso per realizzare ciò che sto facendo?