그래서 이상한 질문처럼 들릴지 모르지만 2 문자열 또는 바이트 [] (Arrays.equals() 사용)을 비교하는 것이 더 빠릅니까? 나는 Hadoop/Hbase로 작업하고 있는데, Hbase의 값으로 byte []를 얻었고, 전달 된 값을 가지고있다. String으로 변환하여 값을 변환하는 것이 더 빠를 것인가? 또는 바이트 배열을 비교해보십시오.문자열이나 바이트 배열을 비교하는 것이 더 빠릅니까?
답변
실제로 이것을 테스트하지 않으면 Array.equals()가 귀하의 친구 인 것 같습니다. 문자열을 만들려면 String 생성자에서 바이트 배열의 복사본을 만들고, 유니 코드를 디코딩해야합니다. 유니 코드는 기본 유니 코드 인코딩 용 디코더를 만들고 바이트 배열을 char 배열로 변환 한 다음 문자열의 각 문자를 반복하는 등호를 수행해야합니다.
O() 유형 계산에서 문자로의 변환을 수행하기 위해 배열의 모든 바이트를 읽어야하므로 equals에 대해 String으로 변환하는 것이 더 복잡하다고 말하고 싶습니다.
업데이트 : 질문에 덧글이 추가되면 String이 주어지고 MapReduce 작업의 여러 결과와 비교하는 데 사용되는 것처럼 들립니다. 이 경우에는 입력 문자열을 바이트로 변환하고 여러 바이트 배열을 비교하는 것으로 보입니다. 이것은 입력 문자열을 남겨두고 작업에 반환 된 모든 바이트 배열을 변환하는 것보다 빠릅니다.
첫째, 두 문자열이 모두 동일한 인코딩인지 여부를 고려해야합니다. 그런 다음 같음 검사를 원할 경우 바이트 비교를 진행하십시오. 그러나 compareTo String 동작을 원한다면 어느 문자열이 더 크거나 작 으면 알 수있는 방법을 찾아야 할 수도 있습니다.이 경우 먼저 String으로 변환 한 후 비교하는 것이 좋습니다.
인코딩이 다르면 String을 작성한 다음 디코딩 부분을 String 클래스 자체에서 비교하는 것이 좋습니다.
그래, 바이트 [] (Hbase의 Bytes.toByte() 사용)에서 같은 방식으로 인코딩되어 있고 compareTo() 기능이 필요하지 않고 그냥 equals()가 필요합니다. – Drizzt321
그러면 바이트 비교를 진행합니다. 실제로 사용 Arrays.equals –
먼저, 정말로 중요한지 스스로에게 물어야합니다. HBase 및 네트워크 통신을 다루는 것을 감안할 때, 무엇이든지간에 시간이 많이 걸릴 수 있습니다. @Clint 및 @Suraj와 마찬가지로, 더 적은 메소드 호출 (즉, Array.equals() 사용)으로 더 나은 것으로 생각됩니다. 문자열을 같을 때 일어날 일을 생각한 다음 바이트 배열을 문자열로 변환하는 오버 헤드를 추가하십시오.
- 1. 어느 것이 더 빠릅니까?
- 2. 어느 것이 더 빠릅니까?
- 3. 어느 것이 더 빠릅니까? 연합인가?
- 4. MySQL 열거 형. 문자열이나 숫자를 사용하는 것이 더 낫습니다.
- 5. 어떤 것이 더 빠릅니까? 작은 배열의 요소를 정렬하거나 배가 시키시겠습니까?
- 6. 이 표를 정규화하는 것이 더 빠릅니까?
- 7. XMLWriter와 SimpleXML. 어느 것이 더 빠릅니까?
- 8. DrawDib StretchDIBits 어느 것이 더 빠릅니까?
- 9. SQL 효율성 - 어느 것이 더 빠릅니까?
- 10. 길이가 0인지 확인하는 것이 빈 문자열과 비교하는 것보다 빠릅니까?
- 11. 자바 스크립트 배열에서 요소를 찾는 것이 더 빠릅니까?
- 12. 어떤 선택자가 더 빠릅니까?
- 13. jboss로 직렬화 된 객체를 전송하는 것이 바이트 배열을 전송하는 것보다 훨씬 빠릅니까?
- 14. 배열을 비교하는 편도
- 15. 직렬화 된 바이트 배열을 비교하여 클래스의 두 인스턴스를 비교하는 것이 신뢰할 수 있습니까?
- 16. NetworkStream에서 읽는 중입니다. ReadLine()과 ByteArray를 비교하는 것이 더 좋습니다.
- 17. 스위치에 문자열이나 클래스의 배열을 넣을 수 없습니다.
- 18. 정적 기능이 더 빠릅니까?
- 19. 두 배열을 비교하는 문제
- 20. 두 배열을 비교하는 평가
- 21. 더 빠릅니까? NSXMLParser 또는 KissXML
- 22. C++ : 일반적으로 문자열이나 char 배열을 사용해야합니까?
- 23. 개체의 특성보다 로컬 변수에 액세스하는 것이 더 빠릅니까?
- 24. Sql 2005, datetime 또는 int로 정렬하는 것이 더 빠릅니까?
- 25. MySQL VIEW 대 임베디드 쿼리 중 어느 것이 더 빠릅니까?
- 26. S3 파일을 참조하는 방법 중 어느 것이 더 빠르거나 빠릅니까?
- 27. OpenGL : 어느 것이 더 빠릅니까? GL_POLYGON 또는 GL_TRIANGLE_FAN입니까?
- 28. XML 구문 분석 : JDOM 또는 RegEx? 어느 것이 더 빠릅니까?
- 29. XML을 한 번에 또는 비트 단위로로드하는 것이 더 빠릅니까?
- 30. 어느 것이 더 빠릅니까? MRI Ruby 또는 JRuby?
프로필/벤치 마크를 시도 했습니까? –
아니요, 다른 사람들이 이미 비슷한 일을했을 수도 있기 때문에 여기에서 묻고 있습니다. Google을 통해 찾을 수없는 것 같습니다. – Drizzt321
이 질문을 약간 정리해야합니다. 값이 문자열 또는 바이트 배열로 전달되며 해당 문자열 또는 동등한 바이트를 갖는 지점입니까? 바이트로 저장된 문자열 인 경우 정보 인코딩이 필요합니다. 모든 인코딩이 동일하다고하더라도 말입니다. – Clint