64λΉνΈ PowerPCλ₯Ό μ¬μ©νκ³ μ°μλμ§ μμ λ¬Έμμ΄μ λν΄ 32λΉνΈ ν΄μ κ²°κ³Όλ₯Ό μν©λλ€.
XXH64λ₯Ό μ¬μ©νμ¬ μΌλ ¨μ λΉμ°μ λ¬Έμμ΄μ ν΄μνκ³ κ° ν΄μμ κ²°κ³Όλ₯Ό λ€μ XXH64 νΈμΆμ μλλ‘ μ λ¬νλ©΄ ν΄μ νμ§μ μμ€μ΄ μμ΅λκΉ? λν λ¬Έμμ΄ μνμ€λ₯Ό λνλ΄λ μ΅μ’ λ¨μΌ 32λΉνΈ ν΄μ κ°μΌλ‘ μ΅μ’ κ²°κ³Όμ νμ 32λΉνΈλ§ μ¬μ©ν©λλ€.
λμΌν κ²μΌλ‘ μμλλ νμ ν΄μλ μ νν λμΌν λ¬Έμμ΄ μνμ€μ λν΄ μνλ©λλ€. μ¦, μ΄ μνμ€ "STRING1", "STRING2"μ μ΅μ’ ν΄μκ° "STRIN", "G1STRING2"μ μ΅μ’ ν΄μμ λμΌν νμκ° μμ΅λλ€.
λ΄ νμ¬ μ½λλ CRC32λ₯Ό μ¬μ©νκ³ μμ μμ μ μνν©λλ€(μ€κ° κ²°κ³Όλ₯Ό λ€μ λ¬Έμμ΄μ μλλ‘ μ λ¬).
κ°μ¬ ν΄μ.
XXH64λ₯Ό μ¬μ©νμ¬ μΌλ ¨μ λΉμ°μ λ¬Έμμ΄μ ν΄μνκ³ κ° ν΄μμ κ²°κ³Όλ₯Ό λ€μ XXH64 νΈμΆμ μλλ‘ μ λ¬νλ©΄ ν΄μ νμ§μ μμ€μ΄ μμ΅λκΉ?
ν° μμ€μ΄ μμ΅λλ€.
XXH64_state_t
, XXH64_update_endian
λ° XXH64_digest_endian
λ΄λΆλ₯Ό μ΄ν΄λ³΄μμμ€.
XXH64κ° XXH64_state_t
μ λ©€λ² λ³μ v1
, v2
, v3
, v4
, total_len
μ¬μ©(μ°κΈ° λ° μ½κΈ°)νλ κ²μ λ³Ό μ μμ΅λλ€ unsigned long long
( uint_64
, 64λΉνΈ λΆνΈ μλ μ μ)μ
λλ€.
μ°λ¦¬λ λ§ν μμλ€:
(1) XXH64_state
μ μ΄ λΉνΈ μκ° 64λΉνΈλ³΄λ€ ν½λλ€.
(2) ν λ² μνλ₯Ό 64λΉνΈ κ°μΌλ‘ μ΅μν(λ€μ΄μ μ€νΈ)νλ©΄ λ§μ μ λ³΄κ° μ¬λΌμ§λ€.
λ°λΌμ κ°μ μ κΈ°λν μ μμ΅λλ€. μ€νΈλ¦¬λ° κΈ°λ₯ μ¬μ©μ κ³ λ €νμμμ€.
@t-matμμ μ μν λλ‘ μ€νΈλ¦¬λ° κΈ°λ₯μ μ€μ λ‘ μ΄ μλ리μ€μ λ§κ² μ€κ³λμμ΅λλ€.
λλ λΉμ μ΄ μλμ λν΄ κ±±μ νκ³ μλ€κ³ κ°μ ν©λλ€.
ν ν΄μμμ λ€μ ν΄μλ‘ κ²°κ³Όλ₯Ό μ λ¬νμ¬ μ무 κ²λ μ»μ μ μλ€κ³ μκ°ν©λλ€.
μ€νΈλ¦¬λ° 컨ν
μ€νΈλ₯Ό μ μ§νλ κ²μ μ€μ λ‘ λΉμ©μ΄ λ€μ§λ§ ν΄μλ₯Ό λ§λ¬΄λ¦¬νλ κ²λ λΉμ©μ΄ λλλ€. λͺ λ°μ΄νΈλ§λ€ ν΄μλ₯Ό μ’
λ£νλ κ²μ XXH_digest()
κ° νΈμΆλ λ μ’
λ£κ° ν λ²λ§ μνλλ μ€νΈλ¦¬λ° 컨ν
μ€νΈλ₯Ό μ μ§νλ κ²λ³΄λ€ μ€μ λ‘ λ λ§μ λΉμ©μ΄ λ€ κ²μΌλ‘ μμν©λλ€.
μ λͺ©νλ CRC32 μ¬μ©μ λν 'λλ‘ μΈ' λ체νμ μ 곡νμ¬ λ§μ νΈμΆ μ¬μ΄νΈμ λν μ½λ λ³κ²½μ μ΅μννλ©΄μ μλλ₯Ό ν₯μμν€λ κ²μ λλ€. μ€νΈλ¦¬λ° μ κ·Ό λ°©μμ κΈ°μ μ μΌλ‘ μ μ©ν μ μμ΅λλ€. 10λ°μ΄νΈ μ²ν¬λ‘ λΆν λ μ€νΈλ¦Όμ ν΄μλ 100λ°μ΄νΈ μ²ν¬λ‘ λΆν λ μ νν λμΌν μ€νΈλ¦Όμ ν΄μμ λμΌνκΈ° λλ¬Έμ λλ€. λΆμ°μ λ¬Έμμ΄μ 'ꡬ쑰'λ κ΄λ ¨μ±μ΄ μμΌλ©° ν΄μ κ²°κ³Όμ κΈ°μ¬ν΄μΌ ν©λλ€.
μ΄κ²μ μμμ μμΉ(λ¨ ν μμ€ κΉμ΄)μ ν¬ν¨λ λ€λ₯Έ λ¬Έμμ΄μ λν 'κ°μ ' μ°Έμ‘°κ° μλ λ¬Έμμ΄μ λλ€. κ°μ λ¬Έμμ΄κ³Ό κΈ°λ³Έ λ¬Έμμ΄μ νμ μ§ν©μ ν΄μν΄μΌ ν©λλ€(κ°μ λ¬Έμμ΄μ λν ν¬μΈν° μ μΈ).
λλ XXH64λ₯Ό μ¬μ©νλ κ²μ΄ 64λΉνΈ νλμ¨μ΄μμ λ λΉ λ₯΄κ³ XXH32λ³΄λ€ λ λμ μ±λ₯μ 보μΈλ€λ κ²μ μμλ€. κ²°κ³Όμ 32λΉνΈλ₯Ό ν΄μλ‘ μ¬μ©νλ€.
μ λ 32λΉνΈ μμ€μ ν΄μ νμ§μ λ§μ‘±νλ―λ‘ λ€μν λ¬Έμμ΄μ 32λΉνΈ ν΄μλ₯Ό λ€μ λ¬Έμμ΄μ ν΅ν©νλ μλλ‘ λ£λ κ²μ΄ ν©λ¦¬μ μΌλ‘ 보μμ΅λλ€.
κΈ°μ‘΄ νλ‘κ·Έλ¨ κ΅¬μ‘°μμ νμ©νλ κ²½μ° 2κ°μ μ°μ ν΄μ μ¬μ΄μ 64λΉνΈλ₯Ό μ λ¬νλ κ²μ΄ μ’μ΅λλ€. λμλ§ 32λΉνΈ μΆμΆμ μνν©λλ€. ν΄μ νμ§μ μ΅λνν©λλ€.
64λΉνΈ μλλ₯Ό νμ©νλλ‘ μ½λλ₯Ό μμ νμκ² μ΅λκΉ? νμ¬ λ€μ λ¨κ³λ₯Ό μλνκΈ° μν΄ νμ 32λΉνΈλ₯Ό μΆμΆνλ λμ μμ 32λΉνΈμ νμ 32λΉνΈλ₯Ό ν¨κ» xor'νμ¬ λͺ¨λ 64λΉνΈκ° 32λΉνΈ μ΄μμ 'κΈ°μ¬'νλλ‘ ν©λλ€. λΆννλ λ°μ΄ν°λ₯Ό 볡μ¬νμ§ μκ³ μ€κ° 64λΉνΈ κ°μ λ€μ λ¬Έμμ΄μ μΆκ°νκ±°λ μΆκ°νλ κ²μ λΆκ°λ₯ν©λλ€. ν΄λΉ μ μ₯μλ₯Ό μ μ΄ν μ μκΈ° λλ¬Έμ λμκ² μ λ¬λ©λλ€.
μ κ²½μ°μ§ λ§μΈμ. μ΄μ XXH64κ° 64λΉνΈ μλ κ°μ νμ©νλ€λ κ²μ μμμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ κ²½μ°μ§ λ§μΈμ. μ΄μ XXH64κ° 64λΉνΈ μλ κ°μ νμ©νλ€λ κ²μ μμμ΅λλ€.