Сравнение производительности между Scala и т.д. и C/C ++/Fortran?

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

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

6
задан S.Tayefeh 28 February 2010 в 21:05
поделиться

3 ответа

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

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

3
ответ дан 17 December 2019 в 07:03
поделиться

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

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

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

0
ответ дан 17 December 2019 в 07:03
поделиться

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

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

1
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: