java.nio.charset.Charset.decode(..)
/encode(..)
을 수행하는 더 빠른 방법을 아는 사람은 누구입니까?java.nio.charset.Charset.decode (..)/encode (..)에 대한 빠른 대안
현재 내가 사용하고있는 기술의 병목 중 하나입니다.
[편집] 특히, 내 응용 프로그램에서 Java 기술보다 하나의 세그먼트가 JNI 솔루션으로 변경되었습니다 (Java 기술보다 내 필요에 가장 적합한 C++ 기술이 있었기 때문에).).
이 변경으로 인해 속도가 크게 저하되었으며 (CPU 사용량이 크게 증가했습니다).
내가 사용했던 JNI 솔루션을 자세히 살펴보면 Java 응용 프로그램은 byte []를 통해 C++ 응용 프로그램과 통신하고 있습니다. 이 바이트 []는 자바 측에서 Charset.encode (..)에 의해 생성되고 C++ 측에 전달됩니다. 그런 다음 byte []가있는 C++ 응답이 Charset.decode (..)를 통해 Java 측에서 디코딩됩니다.
프로파일 러에 대해이 작업을 실행하면 Charset.decode (..) 및 Charset.encode (..) 모두 JNI 솔루션의 전체 실행 시간과 비교하여 상당히 긴 시간이 걸린 것을 알 수 있습니다. JNI 솔루션은 매우 빠르게 정리할 수있는 솔루션이기 때문에 나중에 일정을 정리하면 전체 애플리케이션을 프로파일 링합니다 .-)).
내 문제에 관해 더 자세히 읽고 나면 Charset.encode (..) 및 decode (..)에서 알려진 문제로 보이며 Java7에서 해결되고 있습니다. 그러나 Java7 로의 전환은 몇 가지 제약으로 인해 현재로서는 (나에게는) 옵션이 아닙니다.
누군가 내가 Java5 솔루션/대안을 알고 있는지 묻는 이유는 무엇입니까? (죄송합니다. Java5가 더 빠르다고 언급 했음에 틀림 없습니까?) :-)
기능 요구 사항은 무엇입니까? (더 큰 그림) – BalusC
특정 문자 세트? 최근 릴리스에서는 UTF-8 디코드가 더 빨라야합니다. I/O가 실제 병목 현상이 될 것으로 예상됩니다. –
'decode()'의 바이트의 소스와 문자의 목적지는 무엇입니까? 'encode()'의 문자 소스와 바이트의 목적지는 무엇입니까? 성능 문제는 실제 인코딩 또는 디코딩 프로세스보다 입력 및 출력 할당 및 복사와 더 관련 될 수 있습니다. – seh