Что такое "языковая производительность"?


Я читаю презентацию, в которой сравниваются различные языки программирования. И одна из характеристик, которая измеряется-это "языковая производительность". Что это значит?

6 2

6 ответов:

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

Некоторые языки гораздо легче писать эффективные реализации, чем другие. C, например, в основном всегда был "быстрым" языком, потому что он очень близок к металлу и прост в написании эффективного компилятора. Поскольку производительность технически является свойством реализация, медленный язык может стать быстрым языком по мере улучшения реализации. Java, например, был интерпретирован в его ранних версиях и считался (справедливо в то время) "медленным" языком. С тех пор компиляторы JIT и сборщики мусора стали настолько хороши, что Java теперь по праву заслуживает места среди "быстрых" языков. Это иллюстрирует, почему такие сравнения языковой производительности должны быть приняты с долей соли.

Реальный ответ: это ничего не значит, или что бы там ни думал в то время автор этой презентации.

Может быть, это означает "сколько времени требуется для выполнения действий с той же семантикой относительно других языков"? Но кто может сказать?

Это загруженный вопрос, и он определенно нуждается в интерпретации. Если это высококачественная статья, она должна точно указать, как они измерили ее, чтобы читатель мог сделать свое собственное суждение о достоверности чисел. Как бы я его измерил, хотя это:

Я бы создал / нашел серию программ, которые делают точно то же самое и могут быть написаны очень близко к одному и тому же способу на каждом языке. Возможно, уже существует набор программного обеспечения (a la SPEC cpu2006) именно это и происходит. Найдя эти программы, я запускал их и измерял производительность. Здесь все еще трудно сделать выводы, так как разные языки (и/или время выполнения) делают разные вещи лучше и хуже, и очень трудно найти набор программ, которые "правильно" выполняют все части изучаемых языков.

Обычно это означает, что автор предпочитает один из обсуждаемых языков и пытается убедить вас, что его предпочтение обосновано и основано на твердых фактах, а не на личном вкусе (или, возможно, отсутствии такового).

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

Некоторые языки требуют больших сред выполнения для правильной работы, это в основном относится к интерпретируемым языкам, таким как Python или Ruby. Многие скомпилированные языки имеют меньшие затраты времени выполнения, такие как Objective-C. Эти факторы способствуют повышению производительности.