@artmel

Выбор языка для многопоточного приложения под linux?

Никогда не писал на прикладных языках но встала задача ускорить приложение написанное на php. устраивает всем кроме скорости. задачи математические, шифрование с открытым ключом, многократные регулярные выражения над текстом более 1мб.
Нужно выбрать язык. кроме скорости, также важно количество строк для написания одинаковых задач. Ибо не улыбается писать вместо 1 строки на языке Х, писать 5 строк на языке Y , при разнице в производительности в 30%.
Работать будет на linux, скорее всего debian. Количество процессоров до 4, а ядер по 8 (или больше) на процессор.

Из php будет вызываться программа, которая распарралелит задачу, и создаст потоки по количеству ядер.
одновременный запуск программы двумя php скриптами, маловероятен.

соответственно на этом языке должно быть удобно работать с потоками для разных ядер.

Выбор идет между с , с++, java . также любые ваши варианты.

Если есть возможность переписать на ваш язык и скомпилировать ехе под вин32, буду благодарен. Это поможет определиться со скоростью исполнения.

$tocnost =Pow(10,7 * -1);
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$n=0;
$s1=0;
$s2=0;

$time_start = microtime_float();
do {
    $n=$n+1;
    $S1=$S2+4/(2*$n-1);
    $n=$n+1;
    $S2=$S1-4/(2*$n-1);
} while (($S1-$S2) > $tocnost);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo " $time seconds";
  • Вопрос задан
  • 412 просмотров
Решения вопроса 1
@nirvimel
C - Плюсы: Возможность выжать максимальную скорость из железа.
Минусы: При переходе с динамических скриптов (типа, упомянутого в вопросе, PHP) может несколько шокировать своей многословностью и необходимостью явно описывать каждую мелочь, которая в других языках выводится неявно.
Java - Плюсы: Автоматическая сборка мусора сильно облегчает жизнь и смягчает шок при переходе с динамических скриптов. Гениальный JIT - позволяет сократить отставание от голого железа в скорости (в лучшем случае) до 30%-50% (по сравнению с отставанием в разы и десятки раз для динамических скриптов).
Минусы: Чтобы воспользоваться всей мощью JIT, требуется глубокое понимание принципов его работы и отказ от использования объектов (основной фишки Java) в глубине самых нагруженных циклов.
C++ - Разные люди по-разному используют его. Кто-то на нем пишет в стиле C, получает быстродействие чистого C и презрение истинных C++совцев. Кто-то на нем пишет в стиле Java и получает более компактный код, но и быстродействие как у Java. На самом деле на этом языке можно писать красивые, элегантные и не уступающие в быстродействии программы, но на это уйдут годы обучения (речь не о синтаксисе языка и не о стандартной библиотеке).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
shpaker
@shpaker
Вольный хлебопашец
Можно глянуть на Go...
Ответ написан
ManWithBear
@ManWithBear
Swift Adept, Prague
Можно глянуть в сторону Swift'а.

UPD. В любом случае эти все исследования в вакууме бесполезны. Выделите одну задачу, сделайте её на разных языках, проведите тесты. Выберите то, что лучше отвечает вашим задачам.
Ответ написан
@artmel Автор вопроса
в общем выбран с++ , по банальной причине. много учебников и много кто пишет на нем .
ну относительно много.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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