Собственно я тут с ocaml играюсь, соответственно хотел удостовериться что он более-менее применим на императивных алгоритмов (коих большинство на моих задачах - изображение обработать, обработать данные с датчика (десятки и сотни миллионов элементов в массиве и проч), что не будет внезапных просадок производительности раз эдак в 10 по сравнению с плюсами.
Посему соорудил простейший тест - обычная сортировка пузырьком массива из 40000 элементов (int), массив первоначально отсортирован в обратном порядке, следовательно максимальное число перестановок потребуется.
Ну а поскольку сложно удержаться и не потестить другие ЯП, в итоге было потестировано: ocaml, c++, go, haskell (спасибо geniepro за все варианты кода), component pascal / blackbox.
Итоги выложил на github:
https://github.com/valexey/bubble_testПо итогам скажу, что ocaml меня не разочаровал - производительность всего на 20 процентов ниже плюсовой, и достигается очень просто в отличие от haskell'я, где нужно побегать и попрыгать, чтобы он не сливал позорно более чем в 10 раз плюсам.
Ну а Компонентный Паскаль с отключенными проверками на выход за пределы массива, отстает от С++ более чем в 4 раза. См. табличку :-)