게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금] C가 JAVA보다 느린 괴현상
게시물ID : programmer_9770짧은주소 복사하기
작성자 : 시몬스
추천 : 0
조회수 : 1200회
댓글수 : 17개
등록시간 : 2015/05/07 04:12:30
옵션
  • 본인삭제금지
java와 jni의 성능비교를하고잇는데 이해할수없는 현상이 일어낫습니다.


똑같은 코드를   jni와 java에서 구동한 결과 java가 더 빠르다는 결과가 나온것입니다.

문제는 float배열 의 연산속도였습니다.



-------------------
C코드 (jni)
-------------------

float test[1024];
void test_test()
{
int i;
for ( i=0; i<100000000; i++)
{
test[10] = test[10] + test[11];
}
}

작업시간 1580 ms
작업시간 1586 ms
작업시간 1501 ms
작업시간 1580 ms

----------------
JAVA코드
----------------

float test = new test[1024];
public int test(){
int i;
for ( i=0; i<100000000; i++)
{
test[10] = test[10] + test[11];
}
}

작업시간 3781 ms
작업시간 1398 ms
작업시간 1287 ms
작업시간 1293 ms

처음 호출했을때 읽는속도때문에 c보다 더 느립니다. 하지만 그 뒤론느 c보다 더 빠른 속도를 보이고있습니다.





여기까지는 정말 이해가 안되는겁니다.

java가 c를 이기다니....  native를 vm이 이기다니..

이러면서 c보다는 jni가 문제라며 jni를 비난하고있었습니다.





그러다가 문뜩 float를 int로 바꿔봤습니다.

-------------------
C코드 (jni)
-------------------

int test[1024];
void test_test()
{
int i;
for ( i=0; i<100000000; i++)
{
test[10] = test[10] + test[11];
}
}

작업시간 0 ms
작업시간 0 ms
작업시간 0 ms
작업시간 0 ms




정신이.jpg








아.. 뭐.. flaot가 int보다 연산이 많은건 알겠습니다...

그런데 그렇다고 java보다 느려질거까진 없잖아요..?

혹시 float 버그인가 해서. double도 해봤지만 float와 비슷한 결과...





도대체 뭐가 문제일까요? 그냥 제가 뭔가 잘못한거라면 좋겠는데.. ㅠㅠ 

c는 그적그적해서 뭐가 문제인지 모르겠네요.

혹시 왜  float연산이 java보다 느린지 아시는분계신가요?

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호