Scala vs. C ++ для распределенной обработки графов - PullRequest
3 голосов
/ 07 декабря 2011

Для параллельной обработки графиков, таких как вычисление кратчайшего пути, Scala превзойдет C ++?Если нет, то насколько медленнее это будет (я предполагаю, что параллелизм Scala «проще» писать, чем C ++, так как C ++ не имеет стандартной поддержки для таких вещей)как для изучения нового языка, так и потому, что он, кажется, имеет хорошую поддержку параллелизма.Когда я закончу, я собираюсь написать библиотеку распределенных графов для практики Scala и для собственного использования, но если C ++ будет быстрее, а преимущества от более простого написания кода не стоят компромисса, когда производительностьбеспокойство, мне придется переосмыслить этот квест.

Ответы [ 2 ]

13 голосов
/ 07 декабря 2011

Я бы предложил Scala вместо C ++ по следующим причинам:

  • Параллелизм - как вы говорите, в JVM есть отличная поддержка параллелизма, и Scala является хорошим языком для этого. Это не значит, что вы не можете писать параллельный код на C ++, но гораздо проще «из коробки» в Scala.
  • Сборка мусора - многие алгоритмы графов значительно выигрывают от сборки мусора по сравнению с другими методами управления памятью. Опять же, сборка мусора в JVM превосходна (лучше, чем что-нибудь в мире C ++), и она значительно упростит написание ваших алгоритмов.
  • Качество JIT-компилятора - Я сомневаюсь, что для прохождения графов объектов в динамической памяти будет существенная разница в производительности между хорошим кодом C ++ и кодом, создаваемым JVM JIT. JVM довольно сильно оптимизирована для такого использования.

Конечно, возможно написать чрезвычайно производительный код на C ++. В некоторых ситуациях вручную настроенный код C / C ++ может превзойти JIT (например, избегая необходимости проверок границ массива или проверок нулевого указателя, когда вы можете доказать, что они не нужны). Или вы можете написать свой собственный распределитель памяти, который специализирован для обработки графов и который теоретически может превзойти сборщик мусора общего назначения в JVM (хотя вам лучше быть настоящим гением, если вы хотите попробовать это ....)

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

0 голосов
/ 11 марта 2012

Twitter только что открыл библиотеку обработки графиков, написанную на Scala.

https://github.com/twitter/cassovary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...