В течение нескольких лет веб-сайт тестовых игр показывал это на странице справки -
Что значит "несправедливо"? (Басня)
Они мчались вверх и вниз, и вокруг, и вокруг, и вокруг, и вперед, и назад, и вбок, и вверх ногами.
Друзья Гепарда сказали "это нечестно" - все знают, что Гепард - самое быстрое существо, но гонки слишком длинные, и Гепард устает!
Друзья Сокола сказали "это нечестно" - все знают, что Сокол - самое быстрое существо, но Сокол не очень хорошо ходит, он парит по небу!
Друзья Лошади сказали "это нечестно" - все знают, что Лошадь - самое быстрое существо, но это всего лишь годовалый год, вы должны остановить скачки, пока не примет участие жеребец!
Друзья человека сказали "это нечестно" - все знают, что в "реальном мире" Человек будет использовать мотоцикл, вы должны подождать, пока Человек не заправит и не прогреет двигатель!
Друзья Улитки сказали "это нечестно" - все знают, что существо должно оставить след слизи, все остальные существа обманывают!
Хвост Далматина стучал по земле. Далматин вздохнул и между вдохами сказал: «Посмотри на эту прекрасную гору, давай мчимся на вершину!»
В то время комментарии «это нечестно» были в основном специальными мольбами, предназначенными для того, чтобы получить преимущество для языка программирования X перед недостатком языка программирования Y.
Но проблемы, поднятые вашим вопросом, немного отличаются.
Во-первых, посмотрите на n-body
программы на тестах игры
Веб-сайт. Хотя программы
написаны на разных языках
есть очень маленькая разница
способ кодирования программ.
Пока никто не нашел эффективный
способ использовать четырехъядерный для
эта маленькая проблема n-тела - так что
нет специальных многоядерных программ.
Программы не используют нестандартные
или сложные библиотеки. Программы
полностью реализованы внутри
один исходный файл.
Я сказал, что очень мало
Разница в способе н-тела
программы закодированы, но делает это
действительно означает, что программы являются
так же? Вскоре после того, как проект
был возрожден, 6 или 7 лет назад я
помните ада программист
полушутя о сравнении яблок с
апельсины, потому что ассемблер
из программ Ада не было
такой же, как язык ассемблера от C
программы - так очевидно, что не было
по сравнению с как: -)
otoh исходный код Ады будет иметь
быть написанным по-другому
чем был написан исходный код C,
чтобы компилятор Ada создавал
тот же язык ассемблера, что и компилятор C
производства.
otoh если язык ассемблера создан
оба компилятора действительно были построчными
то же самое, почему бы
разница в производительности?
Когда на пути очень мало различий
программы закодированы, то на первый взгляд
сравнение представляется справедливым, но принудительным
разные языки должны быть закодированы как язык X
может отдавать предпочтение языку X.
Как отметил Янник Версли, точка
использования другого языка для
различные подходы, которые
язык обеспечивает. Другими словами,
есть более чем один способ сделать
то же самое.
Посмотрите на программы Мандельброта на
веб-сайт игры тестов -
простейшая программа на C в два раза меньше
самой быстрой C-программы;
Простейшая C программа является последовательной и
использует doubles, самая быстрая программа на C
использует все 4 ядра через OMP и GCC
встроенные функции.
Другие языки используют различные подходы для использования всех 4 ядер - означает ли это, что мы должны сравнивать только последовательные программы и игнорировать реальность многоядерных вычислений?
Реализация на других языках может не обеспечивать эквивалент встроенных функций GCC. Означает ли это, что мы должны сравнивать только те программы, которые используют double? Но в других языковых реализациях используется различных подходов в том смысле, в каком они представляют удваивается - означает ли это, что мы должны игнорировать все программы с плавающей запятой?
Проблема в том, что языки программирования (и реализации языков программирования) больше чем яблоки от апельсинов, но мы все еще спрашиваем - Будет ли моя программа быстрее, если я напишу ее на языке X? - и все же желаю более простого ответа, чем - Зависит от того, как вы его напишите!
Различные задачи и разные программы на веб-сайте тестовых игр показывают, что некоторые из сравнений производительности ответов запутаны и сложны - детали имеют значение, очень много.