OpenCL на С++ или на Java

191
06 января 2018, 02:50

На C++ или на java выгоднее/дешевле/быстрее реализовать программу для работы с большими объемами данных? Уточню что архитектура программы предполагает большое количество параллельных асинхронных потоков. OpenCL при этом используется для математических расчетов двойной точности. Погуглив нашел лишь похожие темы 5-ти летней давности.

Answer 1

Если нужна максимальная производительность - однозначно C++. Программируя на Java мы получаем преимущественно в скорости написания кода и его переносимости. Многие базовые задачи решает виртуальная машина Java, что в свою очередь требует затрат ресурсов на интерпретацию/JIT-компиляцию байт-кода, управления памятью... В C++ же "платишь" ровно за то, чем пользуешься. Для реализации многопоточности и асинхронности подойдет библиотека Boost.Asio. Если проект достаточно сложный чтобы писать логику в асинхронном стиле, можно использовать сопрограммы. Сам пишу с Folly/Fibers. Но тут нужно понимать что если вся логика приложения сводиться к использованию OpenCl, то особого преимущества C++ перед Java нет. Вызовы методов библиотеки OpenCl для обоих языков будут требовать почти одинаковых затрат, тут как раз таки важен остальной функционал приложения.

READ ALSO
SIP Invite пробел между headers и sdp

SIP Invite пробел между headers и sdp

Когда я формирую INVITE ответ другому юзеру, то нужно добавить пустую строку между headers и sdp, если я ее не добавляю, то звонок не происходитЕсть...

236
Не работает TextToSpeech

Не работает TextToSpeech

В общем, более абсурда я не виделЕсть голосовое приложение, которое по логике, должно отправлять 1234 на сервер(точнее на планшет, на котором...

308
Android умножение

Android умножение

У меня в приложении есть много float значений для денег, так вот когда я некоторые перемножаю у меня в ответ выходит 00

243
Фокус в ScrollView Андроид

Фокус в ScrollView Андроид

Есть СкролВью с много Вьюшек внутри

215