Основываясь только на производительности, примерно, сколько "простых" строк java является эквивалентным ударом производительности при вызове JNI?
Или попытаться выразить вопрос более конкретным образом, если простая java-операция, такая как
someIntVar1 = someIntVar2 + someIntVar3;
был присвоен индекс "CPU work" 1
, каков будет типичный (ballpark) индекс "работа процессора" накладных расходов на вызов JNI?
Этот вопрос игнорирует время, ожидаемое для запуска собственного кода. В телефоническом языке речь идет только о части "падения флага" вызова, а не о "скорости вызова".
Причина, по которой задается этот вопрос, заключается в том, чтобы иметь "эмпирическое правило", чтобы знать, когда нужно пытаться кодировать вызов JNI, когда вы знаете собственную стоимость (от прямого тестирования) и стоимость Java для данной операции. Это может помочь вам быстро избежать проблем с кодированием вызова JNI только для того, чтобы найти, что служебная информация выноса потребляла любое преимущество использования собственного кода.
Edit:
Некоторые люди зацикливаются на вариациях в ЦП, ОЗУ и т.д. Все они практически не имеют отношения к вопросу - я прошу относительную стоимость строк Java-кода. Если ЦП и ОЗУ бедны, они плохо подходят как для java, так и для JNI, поэтому экологические соображения должны быть сбалансированы. Версия JVM также входит в категорию "неулокальных".
Этот вопрос не требует абсолютного времени в наносекундах, а скорее "рабочего усилия" парка шаров в единицах "строк простого кода Java".