Ориентированная на производительность настольная программа: Ruby или Go? - PullRequest
1 голос
/ 07 июля 2011

В настоящее время я не знаю ни одного из двух языков. Разработка программного обеспечения близка к завершению.

Интригует:

  • Рубин: Приятно. Следует за мыслительным процессом. Сделано для людей.
  • Go: Хорошая производительность. Быстрое время компиляции.

Я не знаю о производительности Руби. Если это намного медленнее, чем Go, я пойду с последним (здесь речь идет о типичной скорости).

Я выучу оба в конце концов, но сейчас это определит, какой из них первым.

Обновление: это очень простая программа для редактирования изображений. Техническая и особенно воспринимаемая скорость должна быть высокой. Время запуска особенно важно.

Ответы [ 3 ]

9 голосов
/ 09 июля 2011

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

Вы не сказали нам, какой рабочий стол у вас на уме, я предполагаю, что это либо Windows, либо Mac.

Ruby не подходит, потому что он не соответствует 2 вашим требованиям:

  • у него ужасное время запуска, потому что при запуске он должен инициализировать довольно сложную виртуальную машину, которая включает в себя загрузку довольно большой части ее стандартной библиотеки
  • это очень медленно (по сравнению с C / Java / Go) делать те вычисления, которые влечет за собой обработка изображений

Go статически связан и компилируется в машинный код, поэтому время его запуска превосходно, а скорость близка к C (т. Е. Это самый быстрый язык, который вы можете надеяться выбрать после C / C ++).

Однако Go вообще не поддерживает написание настольных приложений для Mac (т. Е. Не имеет связи со средой выполнения Objective-C / Cocoa), а поддержка написания настольных приложений Windows крайне скудна.

Если вы используете Windows, единственным языком, обеспечивающим быстрое время запуска, является C / C ++ / Delphi. C # может иметь приемлемое время запуска, и оно достаточно быстрое для этой задачи (очень популярный paint.net написан на C #, и вы можете найти старую версию кода, лицензированную BSD, и повторно использовать большую часть кода).

Для Mac я бы порекомендовал Objective C - это родной язык платформы, лучше всего документированный и с лучшими бесплатными инструментами разработки (XCode). Вы можете использовать https://github.com/philippec/Pixen в качестве отправной точки.

2 голосов
/ 07 июля 2011

Вы действительно должны дать нам некоторое представление о том, что вы считаете хорошим и плохим исполнением, потому что это очень субъективный предмет.

Например, люди обычно готовы обменять определенное количество технической или предполагаемой скорости на систему, с которой легче работать или развиваться. Кроме того, это также имеет значение, что вы пытаетесь сделать. У каждого языка есть свои сильные и слабые стороны. Ruby может быть быстрее в некоторых вещах, чем Go. Опять же, если вам действительно нужна скорость, возможно, вам стоит взглянуть на язык, который ближе к металлу, такой как C.

Иногда, однако, запросы пользователей на скорость тоже субъективны. Однажды у меня была система, которая, по мнению пользователей, слишком долго выполняла определенную задачу. Технически не было возможности ускорить его, поэтому я анимировал окно «Обработка ...». Поскольку пользователи теперь могли видеть что-то «происходящее» на экране, они думали, что это происходит быстрее. На секундомере это заняло пару секунд дольше.

0 голосов
/ 07 июля 2011

Я думаю, что эти языки - худшие, которые вы можете выбрать для приложений, критичных к производительности. Я не очень разбираюсь в Go, но Ruby похож на Python (даже медленнее), а Python чертовски медлителен. Как я уже читал, Go намного быстрее, чем Ruby, но по-прежнему в два-три раза медленнее по сравнению с другими языками программирования ... Конечно, это зависит от того, что вы пытаетесь сделать, т.е. Я не выбрал бы ни один из них для физики в реальном времени или что-то в этом роде.

http://shootout.alioth.debian.org/u32/performance.php?test=nbody

Почему язык так медленный?

http://attractivechaos.github.com/plb/

Я работал с python пару лет, и он очень медленный, и я уверен, что вы его возненавидите. Ruby очень похож на Python и работает медленнее, но поскольку Go слишком нов, я не знаю много об этом не могу сказать ..

...