4

http://s24.postimg.org/9y073weid/refactor_vs_non_refactor.png ここに画像の説明を入力 さて、単純な加算操作のリファクタリングされたコードとリファクタリングされていないコードのナノ秒単位の実行時間の結果です。1 から 5 は、コードの連続実行です。私の意図は、ロジックを複数のメソッドに分割すると実行が遅くなるかどうかを調べることだけでした。これは、メソッドをスタックに置くだけでかなりの時間がかかることを示す結果です。

私が何か間違ったことをしている場合は、私を訂正し、これからいくつかの決定的な結果を引き出すために、以前にそれについていくつかの調査を行った、またはこの領域について調査したい人を招待します. 私の意見では、コードのリファクタリングは、コードをより構造化して理解しやすくするのに役立ちますが、リアルタイム ゲーム エンジンのようなタイム クリティカルなシステムでは、リファクタリングしないことを好みます。

以下は、私が使用した簡単なコードです。

    package com.sim;

public class NonThreadedMethodCallBenchMark{

public static void main(String args[]){
    NonThreadedMethodCallBenchMark testObject = new NonThreadedMethodCallBenchMark();
    System.out.println("************Starting***************");
    long startTime =System.nanoTime();

    for(int i=0;i<900000;i++){
        //testObject.method(1, 2); // Uncomment this line  and comment the line below to test refactor time
        //testObject.method5(1,2); // uncomment this line and comment the above line to test non refactor time
    }
    long endTime =System.nanoTime();
    System.out.println("Total :" +(endTime-startTime)+" nanoseconds");
}

public int method(int a , int b){
    return method1(a,b);
}
public int method1(int a, int b){
    return method2(a,b);
}
public int method2(int a, int b){
    return method3(a,b);
}
public int method3(int a, int b){
    return method4(a,b);
}
public int method4(int a, int b){
    return method5(a,b);
}
public int method5(int a, int b){
    return a+b;
}
public void run() {
    int x=method(1,2);
}

}

4

2 に答える 2