SHA-1 해시를 계산해야하는 Java 라이브러리를 작성 중입니다. 일반적인 작업을 수행하는 동안 JVM은 sun.security.provider.SHA.implCompress
에 약 70 %, java.util.zip.Inflater.inflate
에 10 %, sun.security.provider.ByteArrayAccess.b2iBig64
에 2 %를 사용합니다. (NetBeans 프로파일 러에 따름)최대 SHA-1 해시 성능 팁 (Java)
관련 검색 결과를 얻으려면 Google 검색 키워드를 제대로 볼 수 없습니다. SHA-1 해시 알고리즘에 익숙하지 않습니다. SHA-1 MessageDigest
에서 성능을 극대화하려면 어떻게해야합니까? 소화해야 할 특정 청크 크기가 있습니까, 아니면 시도해야하는 특정 크기의 배수입니까?
MessageDigest.update
를) 읽을 바이트가 한 번만 소화되도록
- 예, 내가 소화하고있다.
- SHA-1 다이제스트는 일반적으로 zlib/inflated 일 필요가있는 파일의 체크섬으로 사용됩니다.
- 아니요, 다른 해시를 사용할 수 없습니다.
- 예, zlib은 이미 체크섬을 사용하고 있지만 외부 요구 사항은 SHA-1 해시의 사용을 지정합니다. 나는 좋은 이유를 생각해 낼 수 없다 (+1 할 수 있다면) :-)
이 작업을 수행해야하는 로컬 컴퓨터에서 IO 인 경우 SSD 디스크에 투자하는 것이 좋습니다. 실제로 HDD에서 파일을 읽는 것이 병목 현상입니다. –
I/O를 최적화 할 수있는 작업을 이미 수행했습니다. 이미 다양한 IO 최적화를 조사한 결과, IO는 소화만큼의 시간이 소요된다고합니다.나는 IO로 더 잘 할 수 없다는 것을 확신한다. –
Java는 C/C++과 비교해 보면 속도가 느리지 만 어떤 작업에서는 더 빠르다. 알고리즘의 C/C++ 구현에 액세스 할 수있는 경우 비교를 수행하십시오. java가 상당히 느린 경우에는 개선의 여지가 있지만 거의 같으면 개선 가능성이 적습니다. (내가 할 수학이 많았을 때 나는 C와 Ds와 비교해 봤는데, 자바 버전이 가장 빠르다고 판명되었다.) –