Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / jni, "native" performance / 8 сообщений из 8, страница 1 из 1
19.05.2016, 15:28
    #39239205
it_dev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
Вопрос к java-экспертам относительно производительности native вызовов.

В моем понимании, переход между "состоянием" java -- native дорогой, т.к. выполняется дополнительный служебный код.
Вызов native метода дорогой, т.к. происходит "переход состояния". Из native вызов java-метода дорого, т.к. снова происходит обратный "переход состояния".

Таким образом, частое дергание jni приведет к деградации производительности.

Теперь вопрос, вызов native системных библиотек оптимизирован?
напримр, ConcurrentHashMap (jdk7) везде для вычисления сегмента -- Unsafe native, по несколько раз;
Или get/put/putIfAbsent/containsKey.
AtomicXXX , cas ы используют native.

что можно почитать на эту тему?

спасибо
...
Рейтинг: 0 / 0
19.05.2016, 15:35
    #39239221
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
it_devВ моем понимании, переход между "состоянием" java -- native дорогой, т.к. выполняется дополнительный служебный код.
Вызов native метода дорогой, т.к. происходит "переход состояния". Из native вызов java-метода дорого, т.к. снова происходит обратный "переход состояния".
Что за "состояние" и почему по-вашему должен быть этот самый "переход"?
Да, в некоторых случаях JNI может привести к деградации производительности. Но это не связано ни с какими "переходами состояний".

it_devчто можно почитать на эту тему?
Первая же ссылка из гугла
http://stackoverflow.com/a/7809300
...
Рейтинг: 0 / 0
19.05.2016, 16:02
    #39239277
it_dev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
Blazkowicz, спасибо,
да, эту ссылку я видел.
"переход состояния" - мой только что изобретенный некорректный термин

1. "переход состояния" из native в java:
FindClass()
GetFieldID()
GetMethodId()
GetStaticMethodID()

авторthe call to get the field or method can require significant work in the JVM, because fields and methods might have been inherited from superclasses, making the JVM walk up the class hierarchy to find them... Similarly, looking up class objects can be expensive, so they should be cached as well.

2. "переход состояния" (java -> native & native -> java) == copy arrays

more obstacles:
https://www.ibm.com/developerworks/library/j-jni/

хотелось больше деталей по поводу системных библиотек, что если мы часто делаем get/put/etc для ConcurrentHashMap?
эти вызовы jni оптимизированы? или такие же, как и обычные?
...
Рейтинг: 0 / 0
19.05.2016, 16:14
    #39239302
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
it_devхотелось больше деталей по поводу системных библиотек, что если мы часто делаем get/put/etc для ConcurrentHashMap?
эти вызовы jni оптимизированы? или такие же, как и обычные?
Да, эти вызовы оптимизированы. Unsafe это такой внутренний хак JVM, который позволяет выжать производительности для определенных операций. Именно потому что они не безопасны сами по себе, а фактически безопасны в паре с кодом, который его использует.
Для максимально глубокого погружения в тему, наверное стоит почитать этот блог
http://shipilev.net/
...
Рейтинг: 0 / 0
19.05.2016, 16:27
    #39239329
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
it_devТеперь вопрос, вызов native системных библиотек оптимизирован?
Да, там они работают иначе, смотри интринсики
Например, http://javaforcats.blogspot.ru/2013/03/intrinsic.html
...
Рейтинг: 0 / 0
19.05.2016, 16:47
    #39239362
it_dev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
Blazkowicz, ага, с Unsafe немного знаком, как и блогом! Вопрос был про то, что в Unsafe есть вызовы native, являются вызовы native Unsafe оптимизированными для системных библиотек, тех, которые часть jdk. Буду продолжать учиться формулировать вопросы.
just_vladimir, похоже то, что я искал! и даже на русском языке! спасибо!
...
Рейтинг: 0 / 0
19.05.2016, 16:54
    #39239372
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
it_devБуду продолжать учиться формулировать вопросы.
Во-во. Потому как я до сих пор вопроса не понял.
"Приводит ли JNI к ухудшению производительности?"
"Приводит ли использование Unsafe к ухудшению производительности?"
"Являются ли нативные вызовы Unsafe обычным JNI или они имеют какие-то специальные оптимизации?"
Что именно из этого всего интересует?
...
Рейтинг: 0 / 0
20.05.2016, 18:00
    #39240369
it_dev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jni, "native" performance
Blazkowicz, та да, я имел ввиду "Являются ли нативные вызовы Unsafe обычным JNI или они имеют какие-то специальные оптимизации?" , когда написал:

meТеперь вопрос, вызов native системных библиотек оптимизирован?

т.е. является native call к библиотеке, которую я наогромировал сам, медленнее, чем native callы из Unsafe.
http://stackoverflow.com/questions/7823665/why-jni-call-to-native-method-is-slower-than-similar-in-sun-misc-unsafe

но я еще научусь формулировать вопросы и еще что-нибудь спрошу!
спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / jni, "native" performance / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]