Xxhash: рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдореНрдпрд╛рдК рд╣реИрд╢ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдХреНрддреВре░ 2018  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Cyan4973/xxHash

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

meow_hash рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рддреНрд╡рд░рд┐рдд рдПрдИрдПрд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмреИрдХрдЕрдк рдХреЛрдб рдкрде рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдПрдИрдПрд╕ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рддреНрдпрдХреНрд╖ рдЗрдВрдЯреЗрд▓ рдЗрдВрдЯреНрд░рд┐рдВрд╕рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкреЛрд░реНрдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ "рдмреБрд░реА" рдЪреАрдЬ рд╣реЛ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗ рдореЗрдВ рд▓рдВрдмреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЧрддрд┐ рдорд┐рд▓рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ: рдРрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде, рд╕реБрд╡рд╛рд╣реНрдпрддрд╛ рд╕реБрд╡рд┐рдзрд╛ рд╕реВрдЪреА рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ xxHash рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рднреА рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред

рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

meow_hash рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рддреНрд╡рд░рд┐рдд рдПрдИрдПрд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмреИрдХрдЕрдк рдХреЛрдб рдкрде рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдПрдИрдПрд╕ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рддреНрдпрдХреНрд╖ рдЗрдВрдЯреЗрд▓ рдЗрдВрдЯреНрд░рд┐рдВрд╕рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкреЛрд░реНрдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ "рдмреБрд░реА" рдЪреАрдЬ рд╣реЛ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗ рдореЗрдВ рд▓рдВрдмреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЧрддрд┐ рдорд┐рд▓рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ: рдРрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде, рд╕реБрд╡рд╛рд╣реНрдпрддрд╛ рд╕реБрд╡рд┐рдзрд╛ рд╕реВрдЪреА рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ xxHash рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рднреА рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред

рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдЕрдм рд╕рдЪ рдирд╣реАрдВ рд╣реИ рдЖрдкрдХреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдБ, рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрдврд╝рдХрд░, рдореНрдпрд╛рдК рдиреЗ рдХреБрдЫ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдПрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреА рднреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕рд░рд╕рд░реА рдирд┐рдЧрд╛рд╣ рдбрд╛рд▓реА, рдФрд░ рдХреЛрдИ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмреИрдХрдЕрдк рдкрде рдирд╣реАрдВ рдвреВрдБрдв рд╕рдХрд╛ред рд╢рд╛рдпрдж рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрднреА рддрдХ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдИрдПрд╕ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╣реА рд╣реИрд╢ рдорд╛рди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдХреБрдЫ рд╣реИ (рдЬреИрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реАрд╕реЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╢реАрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмрд╛рдд рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдЯреАрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рдпрд╣ рдореВрд▓реНрдп рд▓рд┐рдЦрдиреЗ/рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╣реИ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдкрдврд╝рд╛/рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдереЛрдбрд╝рд╛ рдФрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╢рд╛рдпрдж рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫ рд╕рдордп рдЪрд╛рд╣рд┐рдПред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрд░реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг, 2.0 GHz Core i7 Gen 2 (рд╕реИрдВрдбреА рдмреНрд░рд┐рдЬ) рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╣реИред

рдмрдЬрдирд╛ 7.0.1
рдЭрдВрдбреЗ: -O3 -march=native

./xxhsum 0.6.5 (64-bits little endian), by Yann Collet
Sample of 100 KB...
XXH32               :     102400 ->    54765 it/s ( 5348.2 MB/s)
XXH32 unaligned     :     102400 ->    53782 it/s ( 5252.1 MB/s)
XXH64               :     102400 ->   104882 it/s (10242.4 MB/s)
XXH64 unaligned     :     102400 ->   105935 it/s (10345.2 MB/s)
XXH32a              :     102400 ->    78027 it/s ( 7619.8 MB/s)
XXH32a unaligned    :     102400 ->    75624 it/s ( 7385.2 MB/s)
XXH64a              :     102400 ->    77204 it/s ( 7539.5 MB/s)
XXH64a unaligned    :     102400 ->    76209 it/s ( 7442.3 MB/s)
XXH auto            :     102400 ->   105179 it/s (10271.4 MB/s)
XXH auto unaligned  :     102400 ->   101546 it/s ( 9916.6 MB/s)
XXH32 auto          :     102400 ->   107646 it/s (10512.3 MB/s)
XXH32 auto unaligne :     102400 ->   104364 it/s (10191.8 MB/s)
XXH64 auto          :     102400 ->   107443 it/s (10492.4 MB/s)
XXH64 auto unaligne :     102400 ->   105843 it/s (10336.3 MB/s)
meow auto           :     102400 ->   214435 it/s (20940.9 MB/s)
meow auto unaligned :     102400 ->   213289 it/s (20829.0 MB/s)

-march=penryn -mno-sse4.2 -mno-avx рдФрд░ рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде:

./xxhsum 0.6.5 (64-bits little endian), by Yann Collet
Sample of 100 KB...
XXH32               :     102400 ->    54106 it/s ( 5283.8 MB/s)
XXH32 unaligned     :     102400 ->    53303 it/s ( 5205.4 MB/s)
XXH64               :     102400 ->   107245 it/s (10473.1 MB/s)
XXH64 unaligned     :     102400 ->   107774 it/s (10524.8 MB/s)
XXH32a              :     102400 ->    78394 it/s ( 7655.6 MB/s)
XXH32a unaligned    :     102400 ->    79666 it/s ( 7779.9 MB/s)
XXH64a              :     102400 ->    78907 it/s ( 7705.7 MB/s)
XXH64a unaligned    :     102400 ->    78179 it/s ( 7634.6 MB/s)
XXH auto            :     102400 ->   108878 it/s (10632.6 MB/s)
XXH auto unaligned  :     102400 ->   105124 it/s (10266.0 MB/s)
XXH32 auto          :     102400 ->   105819 it/s (10333.9 MB/s)
XXH32 auto unaligne :     102400 ->   103970 it/s (10153.3 MB/s)
XXH64 auto          :     102400 ->   110021 it/s (10744.2 MB/s)
XXH64 auto unaligne :     102400 ->   107109 it/s (10459.9 MB/s)
meow auto           :     102400 ->    15962 it/s ( 1558.8 MB/s)
meow auto unaligned :     102400 ->    16022 it/s ( 1564.6 MB/s)

рдпрд╣ рдЕрдм рд╕рдЪ рдирд╣реАрдВ рд╣реИ рдЖрдкрдХреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

...рдЖрдФрд░ рдореНрдпрд╛рдК 0.5 рдореЗрдВ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рдЪ рд╣реИ; рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рдХреЗрд╡рд▓ x64 рдПрдИрдПрд╕ рдХреЛрдб рдкрде рд╣реИ :)

рддреЛ рд╣рд╛рдБ, рдореЗрд╡ рд╣реИрд╢ x86_64 рдФрд░ рдиреЗрд╣рд▓реЗрдо + рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдлреЙрд▓рдмреИрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдмреАрдЪ, XXH3 рдиреЗ рд╕рднреА x86_64 (рдХреЛрд░ 2 рдФрд░ рджреЛрд╕реНрддреЛрдВ рд╕рд╣рд┐рдд), рдкреЗрдВрдЯрд┐рдпрдо 4+ (рдЬреЛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 7+ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ), ARMv7-A w/NEON (рдореВрд▓ iPhone рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ Android рдФрд░ рд╕рднреА iOS рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз) рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрде рдХреЛ рд╡реЗрдХреНрдЯрд░рдХреГрдд рдХрд┐рдпрд╛ рд╣реИред ), ARM64 (рд╕рднреА рд╣рд╛рд▓ рдХреЗ iPhone рдФрд░ Android), VSX POWER9 (рдХрдИ рд╕рд░реНрд╡рд░ рдФрд░ рд╕реБрдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдпреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд╛рдЬрд╛рд░ рд╣реИ), рдФрд░ рдпрджрд┐ рд╡рд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рддреЛ рднреА рд╕реНрдХреЗрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг 32-рдмрд┐рдЯ рдкрд░ рднреА рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ рд▓рдХреНрд╖реНрдп, рдмрд╢рд░реНрддреЗ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЧреБрдгрдХ рд╣реЛред

рдореИрдВ рдХреБрдЫ рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдЕрдиреБрд░реЛрдз рдереЗред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЬреЛ рдПрдХ рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

meowHash рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдмрдбрд╝реЗ рдбреЗрдЯрд╛ (~100 KB) рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ XXH3 рдХреЗ рд╕рдорд╛рди рдЧрддрд┐ рд╕реНрдХреЛрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП XXH128 рд╕реЗ рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИред
https://github.com/Cyan4973/xxHash/wiki/Performance-comparison

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, meowHash рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм _рдЫреЛрдЯреЗ_ рдбреЗрдЯрд╛ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдиреАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдирд┐рд╢реНрдЪрд┐рдд рд▓рд╛рдЧрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкрд░ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдкрд░рд┐рд╢реЛрдзрд┐рдд рд╣реЛрддреА рд╣реИред

рдПрдХ рдЪрд┐рдВрддрд╛рдЬрдирдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ "рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ" рдореЗрдВ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рд╣реИред
рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд░реИрдВрдХрд┐рдВрдЧ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╡рд┐рдЪрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░рдордмрджреНрдз рддрд╛рд▓рд┐рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред
рдЕрдм рддрдХ, рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрддрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред _more_ рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред

рдирддреАрдЬрддрди, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рдореБрдЦ рд╢реАрд░реНрд╖ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдкреНрд░рджрд░реНрд╢рди рдЖрдВрдХрдбрд╝рд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рдкрд╛рдардХ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦрдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдиреА рдкрд╕рдВрдж рдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ред

рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреБрдж рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдПрдХ рдХреНрд░рдордмрджреНрдз рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рддреЗ рд╣реБрдП, рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреБрдбрд╝ рдЬрд╛рддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЧреНрд░рд╛рдл рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рджрд╛рд╡реЗрджрд╛рд░ рдХреЛ рдПрдХ рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реЗрдЦрд╛рдПрдБ рдУрд╡рд░рд▓реИрдк рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИрдВред рдЖрджрд┐ рдореЗрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд░рдВрдЧ рд╣реИрдВред рдмрд╣реБрдд рдЬрд▓реНрджреА, рдпрджрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╛рд╡реЗрджрд╛рд░реЛрдВ рдХрд╛ рдирд╛рдпрдм рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмрдбрд╝реА рдЧрдбрд╝рдмрдбрд╝реА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЧреНрд░рд╛рдлрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдЙрди рджрд╛рд╡реЗрджрд╛рд░реЛрдВ рдХреА рдирд╛рдпрдм рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

"рдХрдЪреНрдЪреЗ" рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдбреЗрдЯрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдЬреЛрдбрд╝рдирд╛, рдЬрдмрдХрд┐ рд╕рд░рд╛рд╣рдиреАрдп рд╣реИ, рдПрдХ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ "рд╕рд╛рд░рд╛рдВрд╢рд┐рдд" рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдПрдХ "рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдЦреНрдпрд╛" рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд░реИрдВрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрдЪреНрдЫреБрдХ рдкрд╛рдардХреЛрдВ рдХреЛ рдЕрднреА рднреА рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЬрд╛рдирдХрд╛рд░реА (рдЧреНрд░рд╛рдл) рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рдХреБрдЫ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлрд╝ рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рджрд╛рд╡реЗрджрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрд╛рдардХ рдЬрд┐рд╕реЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЪрдпрдирд┐рдд рд╕реВрдЪреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ (рднрд▓реЗ рд╣реА рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛ)ред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд░реЗрдЦрд╛рдВрдХрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред рддреИрдпрд╛рд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЧрддрд┐рд╢реАрд▓, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рджрд╛рд╡реЗрджрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдореНрдпрд╛рдК рд╣реИрд╢ рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
https://github.com/Cyan4973/xxHash/wiki/Performance-comparison

рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рдирд╛ рдареАрдХ рд╣реИред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

easyaspi314 picture easyaspi314  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

easyaspi314 picture easyaspi314  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ifduyue picture ifduyue  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vp1981 picture vp1981  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shuffle2 picture shuffle2  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ