Производительность стека на языках программированияJAVA

Программисты JAVA общаются здесь
Anonymous
Производительность стека на языках программирования

Сообщение Anonymous »

Просто для развлечения я попытался сравнить производительность стека нескольких языков программирования, рассчитанных серии Фибоначчи с использованием наивного рекурсивного алгоритма. Код в основном одинаковы на всех языках, я опубликую версию Java: < /p>
public class Fib {
public static int fib(int n) {
if (n < 2) return 1;
return fib(n-1) + fib(n-2);
}

public static void main(String[] args) {
System.out.println(fib(Integer.valueOf(args[0])));
}
}
< /code>
ОК, поэтому дело в том, что использование этого алгоритма с входом 40 Я получил эти времена: < /p>
C: 2.796s
Ocaml: 2.372s
Python: 106.407s
Java: 1.336s
C#(mono): 2.956s
< /code>
Они взяты в ящике Ubuntu 10.04, используя версии каждого языка, доступного в официальных репозиториях, на двухъядерной машине Intel. < /p>
i Знайте, что функциональные языки, такие как OCAML, имеют замедление, которое связано с обращением с функциями как гражданами первого порядка, и не имеют никаких проблем объяснить время работы CPYTHON из -за того, что это единственный интерпретированный язык в этом тесте, но я был впечатлен временем бега Java которая является половиной C для того же алгоритма! Вы бы приписывали это компиляции JIT? < /P>
Как бы вы объяснили эти результаты? Я осознаю, что это не правильный эталон (никогда не говорил: P), и, возможно, я смогу сделать лучше и опубликовать его в следующий раз, в свете того, что мы обсуждали :)
Изменить 2: я обновил время выполнения реализации OCAML, используя оптимизирующий компилятор Ocamlopt. Также я опубликовал тестовый стенд по адресу https://github.com/heheinzollern/fib-test. Не стесняйтесь делать дополнения к нему, если хотите :)

Подробнее здесь: https://stackoverflow.com/questions/412 ... -languages

Вернуться в «JAVA»