|
|
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
Вопрос к java-экспертам относительно производительности native вызовов. В моем понимании, переход между "состоянием" java -- native дорогой, т.к. выполняется дополнительный служебный код. Вызов native метода дорогой, т.к. происходит "переход состояния". Из native вызов java-метода дорого, т.к. снова происходит обратный "переход состояния". Таким образом, частое дергание jni приведет к деградации производительности. Теперь вопрос, вызов native системных библиотек оптимизирован? напримр, ConcurrentHashMap (jdk7) везде для вычисления сегмента -- Unsafe native, по несколько раз; Или get/put/putIfAbsent/containsKey. AtomicXXX , cas ы используют native. что можно почитать на эту тему? спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:28 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
it_devВ моем понимании, переход между "состоянием" java -- native дорогой, т.к. выполняется дополнительный служебный код. Вызов native метода дорогой, т.к. происходит "переход состояния". Из native вызов java-метода дорого, т.к. снова происходит обратный "переход состояния". Что за "состояние" и почему по-вашему должен быть этот самый "переход"? Да, в некоторых случаях JNI может привести к деградации производительности. Но это не связано ни с какими "переходами состояний". it_devчто можно почитать на эту тему? Первая же ссылка из гугла http://stackoverflow.com/a/7809300 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:35 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
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 оптимизированы? или такие же, как и обычные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:02 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
it_devхотелось больше деталей по поводу системных библиотек, что если мы часто делаем get/put/etc для ConcurrentHashMap? эти вызовы jni оптимизированы? или такие же, как и обычные? Да, эти вызовы оптимизированы. Unsafe это такой внутренний хак JVM, который позволяет выжать производительности для определенных операций. Именно потому что они не безопасны сами по себе, а фактически безопасны в паре с кодом, который его использует. Для максимально глубокого погружения в тему, наверное стоит почитать этот блог http://shipilev.net/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:14 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
it_devТеперь вопрос, вызов native системных библиотек оптимизирован? Да, там они работают иначе, смотри интринсики Например, http://javaforcats.blogspot.ru/2013/03/intrinsic.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:27 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ага, с Unsafe немного знаком, как и блогом! Вопрос был про то, что в Unsafe есть вызовы native, являются вызовы native Unsafe оптимизированными для системных библиотек, тех, которые часть jdk. Буду продолжать учиться формулировать вопросы. just_vladimir, похоже то, что я искал! и даже на русском языке! спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:47 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
it_devБуду продолжать учиться формулировать вопросы. Во-во. Потому как я до сих пор вопроса не понял. "Приводит ли JNI к ухудшению производительности?" "Приводит ли использование Unsafe к ухудшению производительности?" "Являются ли нативные вызовы Unsafe обычным JNI или они имеют какие-то специальные оптимизации?" Что именно из этого всего интересует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:54 |
|
||
|
jni, "native" performance
|
|||
|---|---|---|---|
|
#18+
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 но я еще научусь формулировать вопросы и еще что-нибудь спрошу! спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2016, 18:00 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39239205&tid=2124037]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 347ms |

| 0 / 0 |
