Ho cercato di ottimizzare un programma di ruby che è piuttosto complesso di calcoli su molti dati. Non conosco C e ho scelto Ruby (non che lo conosca bene) e sono abbastanza soddisfatto dei risultati, a parte il tempo necessario per l'esecuzione. Sono molti dati e, senza spendere soldi, mi piacerebbe sapere cosa posso fare per assicurarmi di massimizzare le mie risorse di sistema.Esecuzione del programma di ruby su tutti i processori
Quando si esegue un programma Ruby di base, viene utilizzato un singolo processore? Se non ho assegnato compiti specifici a un processore, Ruby non leggerà il mio programma e caricherà magicamente ogni processore per completare il programma il più velocemente possibile? Sto assumendo no ...
Ho letto un po 'per accelerare Ruby, e in un altro thread ho letto che Ruby non supporta il vero multithreading (anche se ha detto JRuby). Ma, se dovessi "scomporre" il mio programma in due blocchi che possono essere eseguiti in istanze separate ed eseguirli in parallelo ... questi due blocchi verranno eseguiti automaticamente su due processori separati? Se avessi quattro processori e avessi aperto quattro shell e avessi eseguito quattro parti separate (1/4) del programma, sarebbe stato completato in 1/4 di tempo?
Aggiornamento
Dopo aver letto i commenti che ho deciso di dare un colpo di JRuby. Portare l'app non è stato difficile. Non ho ancora usato "pesca", ma semplicemente eseguendolo in JRuby, l'app viene eseguita in 1/4 del tempo !!! Insane. Non mi aspettavo tanto di un cambiamento. Andando a dare. Sparare un colpo ora e vedere come questo migliora le cose. Non riesco ancora a crederci.
Aggiornamento # 2
appena dato pesca una prova. Finito per radersi un altro 15% di sconto sul tempo. Quindi passare a JRuby e usare Peach è valsa la pena.
Grazie a tutti!
Senza vedere il codice sorgente, indoviniamo cosa potrebbe essere fatto per velocizzare la vostra applicazione. Potrebbe essere possibile velocizzare un po 'anche se, se stai facendo alcune cose in modo duro/lento. –