그래들 파일에 다음 코드를 추가한 뒤 실행해주면 build/libs 에 opencv-android.jar 파일이 생성됩니다.


task jar(type: Jar) {

    from 'build/intermediates/classes/release/'

    archiveName 'opencv-android.jar'

}

[자바] 제곱 속도 - 직접 만든 제곱 함수가 Math.pow() 보다 빠를 때도 있어요


* 1.0의 제곱을 20억 번 할 경우 Math.pow()가 직접 만든 제곱 함수보다 세 배 느렸습니다.


* 제곱 횟수를 훨씬 늘리면 시간 차이가 줄어들던데, 아마 JIT 컴파일 때문이 아닐까 추측만 해 보았습니다.


* 실험 결과와 코드는 아래와 같습니다.





걸린 시간 (Math.pow 함수, 20억 회): 6 ms

걸린 시간 (직접 만든 제곱, 20억 회): 2 ms




public class 제곱속도측정 {


  public static double 직접만든제곱(double 숫자) {

    return 숫자*숫자;

  }


  public static void main(String[] args) {

    long 시작시간1 = System.currentTimeMillis();

    for(int i=0; i<2000000000; ++i) {

      Math.pow(1.0, 2);

    }

    long 끝시간1 = System.currentTimeMillis();

    System.out.println("걸린 시간 (Math.pow 함수, 20억 회): " + (끝시간1-시작시간1) + " ms");


    long 시작시간2 = System.currentTimeMillis();

    for(int i=0; i<2000000000; ++i) {

      직접만든제곱(1.0);

    }

    long 끝시간2 = System.currentTimeMillis();

    System.out.println("걸린 시간 (직접 만든 제곱, 20억 회): " + (끝시간2-시작시간2) + " ms");

  }


}







리눅스에서 프로그램을 돌려 놓고 한참 뒤에 보면 화면에 Killed 라는 글만 떠 있고 프로세스가 죽어 있는 경우가 가끔 있습니다.

그럴 때에는

dmesg | grep -E -i -B100 'killed process'

라고 치면 프로세스가 강제 종료될 때의 상황을 자세히 볼 수 있습니다.

제 경우에는 대부분 Out of memory가 원인이었습니다.


(참고한 자료: https://stackoverflow.com/questions/726690/who-killed-my-process-and-why)

+ Recent posts