저는 Java로 게임 서버를 구축하고 있습니다. 네트워킹은 JBoss Netty에 의해 처리 될 것이고, JNI를 사용하여 어셈블리 코드에 대한 래퍼 인 C++ 함수를 호출하면 (NASM으로 어셈블 됨) I/O 작업이 완료 될 것입니다. 어셈블리에서뿐만 아니라 대량의 데이터를 처리 할 수 있습니다. 이 접근법에 어떤 종류의 이득이 있습니까?JNI에서 메모리와 속도면에서 이점이 있습니까?
2
A
답변
5
OS에서 I/O 기능에 병목 현상이 있으며 이 아니고 I/O 속도가 향상됩니다. 또한 C++로 전환하거나 일반적으로 더 낮은 수준의 언어로 전환하지 않습니다.
성능을 향상 시키려면 을 사용하여 I/O를 피하십시오.
2
대소 문자를 기반으로합니다. I/O 사이에 커다란 계산/프로세스/메모리 액세스가 포함되어 Java가 C++보다 효율적으로 구현되지 않으면 예를 들어 성능이 향상됩니다. 많은 경우에, 이것은 사실입니다.
성능 향상이 특정 프로세스를 디버그하는 능력보다 중요 할 때 신중하게 생각하십시오. JNI 호출 내부에서 문제가 발생하면 어디에서 문제를 찾아내는 것이 매우 어려울 것입니다.
일반적으로 서버를 사용하면 서버 성능이 추가 하드웨어 (빠른 구성 요소, 클러스터링, 클러스터링 등)를 통해 쉽게 얻을 수 있으므로 성능 문제를 극복하기보다는 문제의 원인을 파악하고 수정하는 것이 더 중요합니다. 등) 당신이 종종 기본 하드웨어로 붙어있는 클라이언트 측 프로그램과는 다릅니다.
관련 문제
- 1. Comparation는 JNI에서
- 2. JNI에서 인터페이스 사용
- 3. C# 대신 Sitecore에서 XSL을 사용하면 어떤 이점이 있습니까?
- 4. JNI에서 bytearray를 읽는 방법?
- 5. pthreads 메모리와 CPU 고정하기
- 6. JNI에서 자바로 바이트 [] 반환
- 7. 코코아 클래스가 JNI에서 시작되었습니다.
- 8. JNI에서 아랍어를 반환합니다.
- 9. 벡터 대 동적 배열, 속도면에서 큰 차이가 있습니까?
- 10. 개미의 재귀 chmod가 속도면에서 exec와 경쟁 할 수 있습니까?
- 11. PHP 공유 블록 메모리와
- 12. 이해 메모리와 CPU 속도
- 13. MSBuild를 사용하면 어떤 이점이 있습니까?
- 14. sessionStorage를 사용하면 어떤 이점이 있습니까?
- 15. 여기에 멀티 코어 이점이 있습니까?
- 16. WCF를 사용하면 어떤 이점이 있습니까?
- 17. 포괄적 인 인터페이스에서 이점이 있습니까?
- 18. Subversion을 사용하면 어떤 이점이 있습니까?
- 19. JNI에서 Android의 nonstatic 메소드 호출
- 20. JNI에서 선언되지 않은 예외가 발생했습니다.
- 21. 동적 메모리와 C의 상속 구조체 ++
- 22. 자바 스크립트보기/숨기기 메모리와 함께
- 23. 블로흐의 빌더 패턴 사용으로 인해 메모리와 성능에 문제가 있습니까?
- 24. JNI에서 C에서 Java로 이벤트/신호를 보내는 방법
- 25. 전략 패턴을 사용할 때 어떤 이점이 있습니까?
- 26. ORM에서 == 연산자를 재정의하는 데 어떤 이점이 있습니까?
- 27. Tomcat에서 APR을 사용하면 어떤 이점이 있습니까?
- 28. 인터페이스에서만 @Deprecated 표기법을 사용하면 어떤 이점이 있습니까?
- 29. SQL DataContext에 LINQ를 삭제하면 어떤 이점이 있습니까?
- 30. 펄 스레드는 커널 스레드와 동일한 이점이 있습니까?
좋아, 고마워. 하지만 JNI가 호출하는 네이티브 코드는 일반적으로 빠를까요? – Benjamin
예, 조금 작았습니다. 이것은 I/O가 빠르기 때문이 아니라 변수의 일반적인 해석과 그와 같은 것이 가상 머신을 통하지 않고 기계 코드에서 직선으로 진행되기 때문입니다. 차이는 거의 없습니다. – orlp
전혀. 너무 일찍 최적화하지 말고 JIT 컴파일러의 가능성을 과소 평가하지 마십시오. JIT 컴파일러가 C++ 컴파일러에서 사용할 수없는 최적화의 가능성이 있습니다. 따라서 네이티브 코드를 호출하면 실제로 혜택을 볼 수 있는지 여부는 분명하지 않습니다. 특히 자바 코드와 네이티브 코드 사이의 경계를 자주 넘어야하는 경우. – jmg