제가 비전공자라서 잘 모르겠지만 자바는 가상 머신이 처음 실행 때 먼저 기계어로 모두 번역 후 실행해서 로딩 속도만 느리고 이후는 빠르다고 들었습니다. 그런데도 자바가 느리다는 개발자들의 경험에 비춰보면 아마 기계어로 처리 되지 않는 부분이 있을지도 모르겠다는 생각이 들었는데, 그게 자동으로 메모리 처리 해주는 부분이라고 생각이 들었습니다. 그리고 대게 프로그램을 혼자 짜는 경우가 없고, 그런 이유로 전역변수를 쓰면 서로 간에 변수 사용이 꼬여서 문제가 터진다고 들었거든요. 근데 전역변수를 쓰지 않으면 함수 내에서 메모리를 할당하고 함수 나가는 즉시 그 메모리가 쓰레기로 남게 되고 가비지 컬렉터가 할일이 많아지죠. 그래서 여러명이 짠 자바 서버는 c보다 하드웨어가 더 받쳐줘야 됩니다. 결국 전역변수 쓰고 메모리 재활용을 통해서 가비지 컬렉터 사용을 억제 하면 자바가 빨리 구동 될 수 있습니다. 이렇게 게임을 짜니까 자바가 아니라 jni쓴 건 줄 아는 경우도 있더라구요.
자바로 성능 내는 법
자바 게임(1.246)
2016-04-26 20:08
추천 1
댓글 6
다른 게시글
-
역시 c언어가 최고다..go 언어같은 소리하네 [2]ㅇ(66.249) | 16.04.26추천 1
-
보통 윈도우 라고 하면 [1]네오(117.55) | 16.04.26추천 0
-
어셈블리 코드 한줄도 안쓰고, 실기에서 돌아가는 운영체제 내가만듬 [2]ㅇ(66.249) | 16.04.26추천 0
-
[러스트] This week in Rust 127 [1]Redox(dayburn) | 16.04.26추천 0
-
내가 c 언어로 만든 운영체제 [1]ㅇ(66.249) | 16.04.26추천 0
-
결국 go 언어로는 운령체제 못만드는 거네 [9]ㅇ(66.249) | 16.04.26추천 0
-
opengl stl 둘다 인터넷강의도 있고 다 있지쟈부리(39.7) | 16.04.26추천 0
-
Go로 운영체제를 만드는게 무슨 의미가 있냐 [23]cc(221.155) | 16.04.26추천 2
-
지난 일요일에 분갈이 했다에어로홍(aerohong) | 16.04.26추천 0
-
c언어로 10진수 몇자리 수인지 가장 짧은 코드가 뭐가 있냐 [5]dd(1.226) | 16.04.26추천 0
기계어로 번역후 돌아가는건 컴파일러계통의 언어인 C나 C++이고자바는 아닌거 아니었나 찾아봐야겠음
아니 네가 알고리즘을 잘 짜면 돼
저도 잘 모르지만 요즘은 jit컴파일러라고 로딩시에 아예 기계어로 바꾼다고 들었는데, 정확한건 모르겠네요.
가상머신을 거치기 때문에 i/o 처리의 속도가 좀 떨어지는 편이야. 특히 메모리나 네트워크 i/o를 사용하면 속도가 좀 안습이야. 그냥 cpu 이용해서 소수 계산 같은거 시키면 속도차이가 없지. 근데 실무에서는 대부분 메모리, 디스크, 네트워크를 사용하니까 안습인 속도가 나오는거지
다행인 것은 nio가 나온뒤에 네트워크 i/o는 꽤 좋아졌다는 점이지, 그러나 파일처리나 메모리 처리는 여전히 안습이야. c/c++대비로 따지면 거의 대여섯배 느려. 그리고 이게 병목현상을 발생시켜서 전체적으로 느려지지, 미션 크리티컬한 금융권에서는 이런 문제때문에 내부는 전부 c로 만드는거구
하지만 웹쪽에서는 자바가 거의 갑이야. c로 웹 프로그래밍을 할 수는 있지만 효율도 떨어지고 생산성은 매우 안습이니까. 내 생각엔 각 언어는 구조에 따라서 알맞는 쓰임새가 있는거 같아.