Я не проделал большую работу с исходным кодом интерпретатора YARV, поэтому следующие комментарии относятся только к интерпретатору 1.8.6 MIR.
В ходе попыток написать расширение C для Ruby в Visual Studio я с ужасом обнаружил, что загружаемые двоичные файлы Windows для Ruby 1.8.6 Windows компилируются с использованием Visual C ++ 6.0, который был выпущен вскоре после окончания Вторая мировая война. С тех пор компиляторы (и целевые процессоры) значительно продвинулись. В то время как сборки Linux получают последние достижения gcc, сборка Windows хромает вместе с технологией компиляторов прошлого века. Это одна из причин. (Отказ от ответственности: предположительно, 1,9 должен быть построен с Mingw, из которых я не фанат, но который также должен быть лучше, чем VC6)
Не зная, какие операции, в частности, вы находите медленнее в Windows, трудно комментировать дальше, но я отмечу, что я обнаружил, что реализация ввода-вывода в Ruby значительно менее эффективна как для сетевого, так и для локального файлового ввода-вывода. Я никогда не углублялся в реализацию примитивов ввода / вывода, чтобы понять почему, но я предполагаю, что реализации предполагают, что быстрые конструкции ввода-вывода в Linux - это быстрые конструкции ввода-вывода в Windows, что почти всегда не так.