Налету это значит, что компилируются те классы к которым в данный момент происходит обращение, причем заметь, что они именно компилируются, из-за этого выполнение программы несколько замедляется. Но опять же при выполнение особо ресурсоёмких кусков кода, когда производится обработка больших объёмов данных, откомпилированные классы остаются в памяти, соответственно в этом случае программа будет работать не медленнее, а возможно и быстрее чем если бы она была на писана на чистом С, благодаря тому что компиляция производится с учётом аппаратных особенностей именно того компьютера на котором программа выполняется. И по-моему ты сам это подтвердил:
Простейший пример: BubbleSort на С будет медленнее, чем QuickSort на C#, при достаточно большом количестве элементов. Хотя делают вроде одно и то же
вообще-то моё высказывание в переводе на человеческий звучит примерно как "Если, у того кто пишет на С, руки из жопы, то выполнятся программа будет как ни крути медленее написанной нормальным человеком на любом другом языке"
PS Теста ради сейчас наваяю какую-нить жуткую чушь ( типа пустого цикла на 100000 итераций
) на C и C# и посмотрим сколько оно будет выполнятся
Лучше рекурсивное (не итерационное!) вычисление чисел Фибоначчи:
Пример на скала:
object fib extends Application
{
def fib(_n: int): int =
if (_n==0) {0;}
else if (_n==1) {1;}
else {fib(_n-1)+fib(_n-2)};
override def main(_args: Array[String]): unit =
{
var mid : long = 0L;
for (val j <- 1 to 5)
{
Console.println("Iteration: "+j);
val startTm : long = System.currentTimeMillis();
Console.println(fib(46));
val endTm : long = System.currentTimeMillis();
Console.println("Total time [ms]:"+(endTm - startTm));
mid = mid + (endTm - startTm);
}
Console.println("Mid time [ms]:"+(mid/5.0));
};
};
Результат:
Iteration: 1
1836311903
Total time [ms]:24300
Iteration: 2
1836311903
Total time [ms]:24211
Iteration: 3
1836311903
Total time [ms]:24377
Iteration: 4
1836311903
Total time [ms]:24179
Iteration: 5
1836311903
Total time [ms]:24208
Mid time [ms]:24255.0
Машинка: Athlon X2 4600, 2Gb, Fedora 8, JDK 1.6u4.
P. S. Хотя вообще не стоит слишком сильно полагаться на эти тесты - в рельных прогах все равно узким местом будет I/O, сеть и БД, и от скорости числодробление мало что зависит.