- 127 名前:117 mailto:sage [02/12/31 20:03]
- public void add(Point3d p),public native void add(Point3d p)
の2つで実際にやってみたよ. 方法はこのaddメソッドを100M回呼び,その時間を計測するというもの. その結果,前者が40msec, nativeの方が大体4000msec. 予想通り呼び出しなんかのオーバーヘッドが大きかったということでしょうか. ということでもう一つ.今度は↓のようなもの. public void exe() { double x = this.x; double y = this.y; double z = this.z; for (int i = 0; i < 0xfffffff; i++) { x += 1.0; y += 1.0; z += 1.0; } this.x = x; this.y = y; this.z = z; } 単純に0xfffffff回,+1.0するだけのものだけど, これもまたnativeと2つ作成して,今度は一回だけ呼んで時間を計測したもの. その結果,普通の場合がおよそ5000msec,nativeは4000msec あんまり変わらなかったですね. JDK1.4/WinXP/1GHz/C++コンパイラは.NETのもの(よく分からない) JNIで処理の速さを求めるのは間違いかもしれません. よほど負荷のかかる処理でもない限り,JNIは使うべきではないと思いました. Javaでは実現出来ないところをCなりで実装するためにあるのかも知れません. ちなみに使用したnativeコードは次の書き込み.
|

|