Стоит ли реализовывать код C ++ через JNI в этом приложении? - PullRequest
2 голосов
/ 05 июля 2011

Я занимаюсь разработкой серверного приложения и хотел бы использовать гибкость и (возможное) повышение скорости, которые может предложить C ++, путем реализации сетевого кода на C ++. Однако базовое приложение должно быть написано на Java.

Мне известно о возможном влиянии надежности и отладки, которое реализация JNI-кода может оказать на JVM. Поэтому я хотел бы знать, стоило ли реализовывать такое поведение в C ++, или вызванные накладные расходы просто не оправдывают его?

Ограничение: писать приложение полностью на C ++ нельзя.

Редактировать: Я опытный (не очень, но я могу решить большинство задач) программист C ++, и я планирую использовать библиотеку, есть ли у вас какие-либо предложения?

Основные критерии:

  1. Скорость
  2. Повышает уровень абстракции
  3. Событие отправлено
  4. Асинхронный (я буду синхронизировать код в Java перед вызовом функций C ++)
  5. Имеет поддержку / является многопоточным)

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Нет, это не будет стоить этого по причинам, которые вы упомянули (связанных с издержками), и без каких-либо войн c ++ / java по поводу производительности не было бы достаточно (производительности), чтобы повлиять на пропускную способность клиента./ Тип сервера звонков.

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

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

1 голос
/ 05 июля 2011

Если приложение связано с вводом / выводом, то оптимизация загрузки ЦП вряд ли будет иметь существенное значение.У JNI тоже есть накладные расходы.

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

Я вполне уверен, что написание чего-то такого сложного, как сетевой код на C ++ вместо Java, будет очень трудоемким, если у вас нет доступа к людям, которые уже являются опытными программистами C ++.Если это тот тип вещей, когда вы не знаете C ++, но слышали, что он быстрее, вам лучше оставить все в Java и сосредоточиться на своей реализации.

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

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