최적화에 대한 도움이 필요합니다. 나는 JAVA로 만든이 오픈 소스 게임 서버를 개선하려고 노력 중이다. 각 플레이어는 자신의 스레드를 가지고 있으며, 각 스레드는 다음과 같이 간다 :이 코드는 바보 너무 여러 번 들었습니다한 번에 1 바이트 씩 소켓 읽기, 이것을 변경하는 방법,
BufferedReader _in = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
String packet = "";
char charCur[] = new char[1];
while(_in.read(charCur, 0, 1)!=-1)
{
if (charCur[0] != '\u0000' && charCur[0] != '\n' && charCur[0] != '\r')
{
packet += charCur[0];
}else if(!packet.isEmpty())
{
parsePlayerPacket(packet);
packet = "";
}
}
를하고 프로파일 링 할 때 나는 각 바이트를 읽고 추가 것을 볼 수 있기 때문에 동의 packet += ""
을 사용하면 바보 같고 느립니다.
나는 이것을 개선하고 싶지만 어떻게 해야할지 모르겠다. 나는 '\u0000
을 기반으로 패킷을 분리해야하기 때문에 이보다 더 느려지는 것을 두려워한다. ', '\n'
또는 '\r'
을 사용하여 구문 분석 할 수 있습니다. 그리고 나는 3 번 나누는 것이 verry slow임을 안다.
누군가 내 아이디어를 줄 수 있습니까? 또는 이것을위한 코드 조각? 그것은 내 하루를 만들 것입니다.
설명을 원하시면 verry simple words와 코드 예제를 사용하십시오. 저는 자바 초보자입니다. 고맙습니다
If 당신은 비디오 게임을위한 자바 초보자 서버 백엔드입니다, 나는 당신에게 행운을 빌어 요. 제비 뽑기와 제비 뽑기! :) – cheeken
기본을 가지고 있어도 걱정하지 마라. 오랫동안 vb6 프로그래머로 일 해왔다. 나는이 도움이 필요하다. – Reacen
quick comment; ['StringBuilder'] (http://download.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html)를 사용하면 느린''packet + = charCur [0];을 피할 수 있습니다. 루프 (각 루프에 문자열을 할당 함) –