Ради эксперимента переписал один свой скрипт с Python на Go

Ради эксперимента переписал один свой скрипт с Python на Go (с использованием “горутин”). Смысла особо в этом не было, так как там узкое место - операции с диском, но захотелось немного познать Go.

Замерил время выполнения на тестовых данных. Для начала запустил первый раз для того, чтобы все закешировалось. Потребовалось где-то 2 минуты. Затем уже попеременно запускал то на Python, то скопилированный exe на Go.

Python 3.6 (в один поток) ~ 12 секунд

Go (с кучей "горутин") ~ 0.5 секунды

Вот так выглядит график загрузки CPU:

В общем, многопоточность в Go - интересная штука, но после питона не очень приятно писать “толстый код”. Особенно когда привык часто использовать элементы функционального программирования.

Кстати, про ФП. Все хочу пощупать нормально Haskell. Но пока только остановился на “хеллоу ворлде”. :)

Python or Go