2009-10-13 6 views
2

Наша основная программа находится в Java, но код, который извлекает наши данные из хранилища, написан на C. Мне нужно собрать файл HDF5 из извлеченных данных. Было бы лучше использовать JNI для вызова кода C, чтобы получить данные, а затем построить файл HDF5 с Java или построить HDF5 из кода C?JNI Performance

У меня есть небольшой опыт работы с JNI или C.

Также одним из основных критериев является производительность. Какая часть производительности наблюдается при использовании JNI?

ответ

6

Граница вызова функции «медленная», поэтому, если вы выполняете много вызовов в своей обычной программе, производительность будет страдать.

Примером такого рода вещи, которые могут выгоду от перехода к JNI (подчеркиваю МАЕ, потому что Java является более чем достаточно быстро для многих целей) была бы рутина, чтобы делать какие-то обработки изображений на большой битмап. Но для вызова JNI-процедуры для каждого пикселя было бы намного, намного медленнее, чем делать это в цикле в чистой Java.

Извлечение данных из одного формата в другой является, откровенно говоря, тем, что лучше всего делать на языке сценариев, таком как Python, и никогда не будет привязан процессором. Скорее, скорость диска будет способ, путь медленнее, чем любой интерпретатор языка.

1

Полагает, что, поскольку у вас мало опыта работы с C, ваш лучший выбор - сделать это с помощью Java. JNI действительно не так уж плох.

0

Я вообще не знаком с интерфейсами HDF, отличными от C, поэтому я не могу сравнивать их.

Я хотел бы указать, что это API, который использует все другие интерфейсы, поэтому, если вы обнаружите, что вам нужно извлечь максимальную производительность, тогда API C будет лучшим.

Существует также вопрос о том, какие части API доступны для вас. Например, я изначально начал с интерфейса C++. Некоторые API-интерфейсы по-прежнему доступны только в C API. Это не проблема, если вы используете C & C++, но это может быть проблемой, если вам не нужен API.

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

 Смежные вопросы

  • Нет связанных вопросов^_^