Может ли программа, написанная на C, быть быстрее, чем программа, написанная на OCaml и переведенная на C? - PullRequest
0 голосов
/ 15 апреля 2010

Итак, у меня есть крутой алгоритм обработки изображений. Я написал это в OCaml. Это хорошо работает. Теперь я могу скомпилировать его в виде кода C с помощью такой команды ocamlc -output-obj -o foo.c foo.ml (у меня есть ситуация, когда мне не разрешают использовать компилятор OCaml для сборки моей программы для моей арктетектуры, я могу использовать только специально модифицированный gcc., Поэтому я скомпилирую это программа с чем-то вроде gcc -L/usr/lib/ocaml foo.c -lcamlrun -lm -lncurses и Itll работает на моей архитектуре.)

Я хочу знать, в общем случае, может ли программа, написанная на C, быть быстрее, чем программа, написанная на OCaml и переведенная на C?

Ответы [ 2 ]

5 голосов
/ 15 апреля 2010

Да. Но все обобщения по таким вопросам просто обобщения, и вы (и другие здесь) сможете найти контрпримеры.

Конечно, этот ответ сам по себе является обобщением.

4 голосов
/ 15 апреля 2010

Производительность обычно зависит не от языка, а от алгоритмов, используемых для решения проблем. Для любой проблемы существует абсурдиллион различных алгоритмов, решающих ее, с различными сложностями во времени и пространстве.

Таким образом, у вас может быть решение с O (n) на ультра-медленном языке A и решение с O (n ^ 2) на ультра-быстром языке B. Для n будет некоторый порог n_t. A будет медленнее, чем B для n n_t.

Даже при реализации одного и того же алгоритма есть еще один абсурдиллион различных способов сделать это, влияющих на постоянный фактор сложности. Таким образом, ответ на ваш вопрос, как уже дано, определенно да, но это не помогает, потому что сам вопрос совершенно бесполезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...