仅基于性能,大约有多少"简单"的java行是进行JNI调用的等效性能?
或者尝试以更具体的方式表达问题,如果是简单的java操作,例如
someIntVar1 = someIntVar2 + someIntVar3;
Run Code Online (Sandbox Code Playgroud)
给出了一个"CPU工作"索引1,那个JNI调用开销的典型(球场)"CPU工作"索引是什么?
此问题忽略了等待本机代码执行所花费的时间.在电话用语中,它严格来说是呼叫的"旗帜下降"部分,而不是"呼叫率".
提出这个问题的原因是有一个"经验法则",当你知道本地成本(来自直接测试)和给定操作的java成本时,知道何时打算尝试编写JNI调用.它可以帮助您快速避免编写JNI调用的麻烦,只是发现callout开销消耗了使用本机代码的任何好处.
有些人对CPU,RAM等的变化感到困惑.这几乎与问题无关 - 我要求java代码行的相对成本.如果CPU和RAM很差,它们对java和JNI都很差,因此环境因素应该平衡.JVM版本也属于"无关"类别.
这个问题不是要求以纳秒为单位的绝对时间,而是以"简单java代码行"为单位的球场"工作努力".