Сравнение производительности между Scala и т. Д. И C / C ++ / Fortran? - PullRequest
6 голосов
/ 19 февраля 2010

Интересно, есть ли надежное сравнение производительности между "современными" специализированными многопоточными языками, такими как, например, scala и "классическими" "низкоуровневыми" языками, такими как C, C ++, Fortran, использующими параллельные библиотеки, такие как MPI, Posix или даже Open-MP.

Любые ссылки и предложения приветствуются.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2010

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

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

1 голос
/ 20 февраля 2010

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

PS Ответ будет таким: Fortran, C и C ++ потребляют значительно больше 95% циклов ЦП.*

0 голосов
/ 20 февраля 2010

Я бы рассматривал такие сравнения как дробь.Числитель является константой (около 0,00001, я считаю).Знаменатель - это число потоков, умноженное на количество логических процессоров.

IOW, для одного потока сравнение имеет примерно один шанс из миллиона что-то значить.Для четырехъядерного процессора, на котором запущено приложение (скажем, с 16 потоками), вы получаете один шанс из 64 миллионов значимых результатов.

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

...