ByteBuffer (java.nio)는 Buffer 클래스보다 더 효율적 (?)이기 때문에 데이터를 읽는 데 사용해야한다고 읽었습니다. 내 질문은 멀티 캐스트 주소에서 패킷을 읽고 원시 개체로 처리하는 UDP 클라이언트를 중심으로 이루어집니다. DatagramSocket에서 이러한 패킷을 구문 분석하는 가장 효율적/가장 빠른 방법은 무엇입니까? 바로 지금, 나는 ByteBuffer를 랩핑하고 읽는 바이트 배열을 가진 데이터 그램 패킷을 가지고있다. 내 목표는 새로운 개체 생성을 최소화하고 속도를 최대화하는 것입니다.ByteBuffer 대 데이터 그램 패킷의 버퍼
답변
DatagramSocket
은 ByteBuffer
으로 직접 읽을 수 없지만 대신 DatagramChannel
을 사용하면됩니다.
DatagramSocket _can_ ByteBuffer에 직접 수신 할 수 있습니다 ("직접"으로 0 인 경우). ByteBuffer를 래핑하는 DatagramPacket을 만듭니다. ByteBuffer에서 데이터를 수신() 한 다음 읽을 수 있습니다. 패킷 구성 및 send()와 동일합니다. – charstar
@charstar, 나는 그것이 맞는 것 같지 않습니다. 'DatagramPacket' 생성자는 모두 ByteBuffer가 아니라'byte []'를 사용합니다. 버퍼가있는 경우에만 버퍼의 배킹 배열을 취할 수 있으며 * 직접 * 바이트 버퍼에는 버퍼가 없을 것입니다. – finnw
ByteBuffer는 효율성이 아닌 프로그래머의 관점에서 효율적으로 액세스 할 수있는 충분한 기능을 버퍼가 갖고 있지 않기 때문에 사용해야한다고 생각합니다. 기본 코드가 대부분 중복되므로 효율성에 차이가 있는지 의심 스럽습니다.
간단한 바이트 배열을 사용하는 것보다 효율적인지 여부가 항상 명확하지는 않습니다. NIO 성능은 잘못 평가하기 쉽습니다.
- 1. 파이썬 로깅 데이터 그램 핸들러
- 2. 단편화없이 UDP 데이터 그램 보내기
- 3. 스택 대 버퍼
- 4. IPv4 패킷의 데이터 유형 찾기
- 5. 리눅스에서 보낼 수있는 AF_UNIX 데이터 그램 메시지의 최대 크기는 얼마입니까?
- 6. Tibco 데이터 그램 용 JavaDocs (TibrvMsg)?
- 7. UDP 데이터 그램 소켓 + 자바 체크섬
- 8. 자바 데이터 그램 소켓이 패킷을받지 못합니다.
- 9. 데이터 그램 소켓을 통해 개체 보내기 java
- 10. 공백을 찾는 ByteBuffer 구문 분석
- 11. Java의 Infinite ByteBuffer
- 12. ByteBuffer recycling class
- 13. UDP 패킷의 형식을 설정하는 방법은 무엇입니까?
- 14. node.js 버퍼 데이터 디코드
- 15. 오디오 버퍼 데이터 받기
- 16. 문제점 : 버퍼 데이터 얻기
- 17. 대형 버퍼 대 대형 정적 버퍼, 이점이 있습니까?
- 18. TCP와 IP 패킷의 관계
- 19. 오디오 파일 스펙트로 그램, 진폭 또는 시간 대 주파수입니까?
- 20. PostgreSQL의 텍스트에서 n 그램
- 21. 가장 큰 데이터 세트에 맞게 JAVA NIO ByteBuffer 할당?
- 22. 대용량 페이지 버퍼 대 다중 동시 프로세스
- 23. HLSL 균일 변수 대 상수 버퍼
- 24. 파이썬 소켓 보내기 버퍼 대. Str
- 25. linux kernel-> userspace 멀티 캐스트 스트리밍 데이터 그램
- 26. 문자열 대 c_str() 대 데이터()
- 27. 사운드 스펙트로 그램
- 28. 그램 - 슈미트 직교 화
- 29. ByteBuffer, 뒤집기가 필요한지를 감지하는 명확한 방법은 무엇입니까
- 30. 패킷의 내용을 표시합니다.
이 질문은 [stackoverflow.com] (http://stackoverflow.com)에 더 적합 할 것이라고 생각합니다. –