var hashtable = new System.Collections.Generic.Dictionary<int, double>(n);
1) Не могу использовать Dictionary. Он не thread-safe, а Hashtable is thread safe.
2) Я пробовал прогонять код для более короткого цикла (напр. 100000) и clr и jvm имеют одну производительность. Такое ощущение что CLR GC не справляется. Это также подтверждается вызовом GCSettings.LatencyMode на LowLatency. Цифры сразу взлетают вверх.