Я думаю, что Runtime отстает от JVM очень сильно. Виртуальная машина в .NET обладает очень плохим сборщиком мусора и очень слабым JIT-компилятором. В итоге получается медленно исполняющийся код, в котором приходится вставлять затычки на затычки, чтобы избежать лишних аллокаций и справиться с теми функциями, которые автоматически не инлайнятся. Код автоматически не оптимизируется на должном уровне. В Java такой проблемы нет.
http://habrahabr.ru/company/jugru/blog/274091/