Szukałem optymalizacji programu ruby, który jest dość intensywny w obliczeniach na wielu danych. Nie znam C i wybrałem Ruby (nie, że znam to dobrze) i jestem całkiem zadowolony z wyników, z wyjątkiem czasu, który trzeba wykonać. Jest dużo danych i bez wydawania pieniędzy chciałbym wiedzieć, co mogę zrobić, aby upewnić się, że maksymalizuję własne zasoby systemowe.Tworzenie programu ruby na wszystkich procesorach
Kiedy uruchamiam podstawowy program typu Ruby, używa on pojedynczego procesora? Jeśli nie przypisałem specjalnie zadań do procesora, Ruby nie przeczyta mojego programu i nie załaduje magicznie każdego procesora, aby ukończyć program tak szybko, jak to możliwe, prawda? Zakładam, że nie ...
Czytałem trochę o przyspieszaniu Rubiego, aw innym wątku czytałem, że Ruby nie obsługuje prawdziwej wielowątkowości (chociaż mówiło, że robi to JRuby). Ale gdybym miał "zepsuć" mój program na dwie części, które mogą być uruchamiane w oddzielnych instancjach i uruchamiać je w parralelu ... czy te dwie części automatycznie uruchomiłyby się na dwóch oddzielnych procesorach? Gdybym miał cztery procesory i otworzył cztery powłoki i uruchomił cztery oddzielne części (1/4) programu - czy zakończyłby się za 1/4 czasu?
Aktualizacja
Po przeczytaniu komentarzy postanowiłem dać jruby strzał. Przeniesienie aplikacji nie było trudne. Nie użyłem jeszcze "brzoskwini", ale po prostu uruchamiając go w JRuby, aplikacja działa w 1/4 czasu !!! Szalony. Nie spodziewałem się tak dużej zmiany. Pójść, aby dać .peach strzał i zobacz, jak to poprawia rzeczy. Nadal nie mogę uwierzyć w to wzmocnienie.
Aktualizacja # 2
Właśnie dałem brzoskwini spróbować. Skończyło się golenie o 15% taniej. Dlatego warto było przejść na JRuby i używając Peacha.
Dziękuję wszystkim!
Nie widząc kodu źródłowego, zgadujemy, co można zrobić, aby przyspieszyć działanie aplikacji. Możliwe jednak, że uda się go trochę przyspieszyć, jeśli robisz coś trudnego/powolnego. –