КИТА unofficial

Компьютерный => Программирование => Тема начата: vimmax от Февраль 23, 2007, 06:20:21



Название: Сравнение языков программирования.
Отправлено: vimmax от Февраль 23, 2007, 06:20:21
Сравнение скорости выполнения различных задач при использовании разных языков программирования.

http://shootout.alioth.debian.org/debian/benchmark.php?test=hello&lang=all (http://shootout.alioth.debian.org/debian/benchmark.php?test=hello&lang=all)

В выпадающих меню выбираете тип задачи и нажимаете Show. Можно также просмотреть программный код.

Ассемблера нет, т.к. в результате любая программа превращается в ассемблер. Что меня поразило - С++ не всегда первый по скорости!!!!


Название: Re: Сравнение языков программирования.
Отправлено: Sterh от Февраль 24, 2007, 12:33:42
Поразительно неужели Паскаль опережает С++?..

Но мне кажется, только вывод строки с Hello world - это ещё не показатель, особенно при решении более сложных задач.


Название: Re: Сравнение языков программирования.
Отправлено: Alder от Февраль 24, 2007, 01:25:27
Но мне кажется, только вывод строки с Hello world - это ещё не показатель, особенно при решении более сложных задач.
Согласен на все 100%. Особенно впечатлило что Ada опередила С# :))


Название: Re: Сравнение языков программирования.
Отправлено: vimmax от Февраль 26, 2007, 11:01:19
Поразительно неужели Паскаль опережает С++?..
Насколько я знаю вызов функций в Паскаль опережает вызов функций С по скорости. В ранних версиях Visual C поддерживался даже специальный макрос __pascal, который позволял вызывать С функции по Паскалевскому методу.

Меня больше поразило, что Java опережает С++ в некоторых задачах, что для интерпретатора очень даже неплохо.


Название: Re: Сравнение языков программирования.
Отправлено: Sochin от Февраль 26, 2007, 11:05:54
Какой-то стремный тест. Кто мне пояснит за счет чего интерпретируемая программа может работать быстрее скомпилированного приложения?


Название: Re: Сравнение языков программирования.
Отправлено: EvilMax от Февраль 26, 2007, 09:45:56
Насколько я знаю вызов функций в Паскаль опережает вызов функций С по скорости. В ранних версиях Visual C поддерживался даже специальный макрос __pascal, который позволял вызывать С функции по Паскалевскому методу.

Меня больше поразило, что Java опережает С++ в некоторых задачах, что для интерпретатора очень даже неплохо.
1. Насчет вызовов в Паскаль не уверен. Может, это в Delphi что-то набокопорили, но накладные расходы на вызовы функций там просто ужасны. Удавалось повысить быстродействие алгоритма, только отказавшись от вызова функции.
2. Ну не такой уж Java и интерпретатор ;) Думаю, этот термин жестковат по отношению к JVM (как и к виртуальной машине .NET). Все-таки, JVM выполняет байт-код, а не интерпретирует исходный текст.


Название: Re: Сравнение языков программирования.
Отправлено: Sochin от Февраль 26, 2007, 11:06:12
2. Ну не такой уж Java и интерпретатор ;) Думаю, этот термин жестковат по отношению к JVM (как и к виртуальной машине .NET). Все-таки, JVM выполняет байт-код, а не интерпретирует исходный текст.

Кстати вопрос к спецу: все-таки байт-код интерпретируется на ходу или он уже скомпилирован и сразу выполняется?


Название: Re: Сравнение языков программирования.
Отправлено: LazarusLong от Февраль 27, 2007, 02:23:52
Вот еще один тестик интересный.
http://www.osnews.com/story.php?news_id=5602&page=3
А вообще к результатам подобных исследований нужно подходить с большой осторожностью. Потому как тесты можно подобрать самые различные. И результаты соответственно тоже очень отличающиеся получить.


Название: Re: Сравнение языков программирования.
Отправлено: fantomx от Март 05, 2007, 03:15:41
Еще немаловажна платформа. Из личного опыта:

1) C# .NET - работает быстрее под Виндой раза в 3 нежели в Linux с пакетом Mono
2) Java летает под Sun Solaris а под остальными ОС - полное извращенство


Название: Re: Сравнение языков программирования.
Отправлено: EvilMax от Январь 15, 2008, 01:01:39
Кстати вопрос к спецу: все-таки байт-код интерпретируется на ходу или он уже скомпилирован и сразу выполняется?
Виртуальная машина Java HotSpot, которая уже давно является основной виртуальной java-машиной, поддерживает технологию JIT (Just-In-Time compilation). Работвет в двух режимах - клиентском и серверном.

1. Клиентский - оптимизация направлена на ускорение запуска приложений.
2. Серверный - максимальная оптимизация всего кода. Часто в ущерб скорости запуска.

Так что ответ: компилирует в нативный код и выполняет. Как и .NET framework, кстати.