рд╣реИрд╢ + рдХреИрд╢: рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди

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

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

рд╣рдо рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдЧреНрд░рд╛рд╣рдХ Node.js рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ "рд╕реМ" рдпрд╛ рдмрд╛рд╣рд░реА рдХреИрд╢рд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ / рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХрдИ рд╕реМ рдПрдордмреАрдкреАрдПрд╕ рдХреА рдЖрдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреЗрд░реА рджреЗрддрд╛ рд╣реИ ред

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

рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреИрд╢рд┐рдВрдЧ


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

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

рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдореВрд▓ рдкрд╛рда рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рджрд╕рд┐рдпреЛрдВ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд▓реЗрддрд╛ рд╣реИ) - рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрд╢ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд┐рд░реНрдл рдмрд╣реБрдд рддрдереНрдп рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ред

рдХреБрдВрдЬреА рд╢рдмреНрджрдХреЛрд╢


рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ Array, рдФрд░ Array.includes()рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдмреЗрдорд╛рдиреА рд╣реИ - рдЦреЛрдЬ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ (рдХрдо рд╕реЗ рдХрдо V8 рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ) рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ, O (N)ред рдФрд░ рдЖрдзреБрдирд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ 2-3% рдХреА рдЧрддрд┐ рд╕реЗ рд╣рд╛рд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдкреВрд░реНрд╡-рдИрдПрд╕ 6 рдпреБрдЧ рдореЗрдВ, рднрдВрдбрд╛рд░рдг рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдерд╛ Object, рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдереЗред рд▓реЗрдХрд┐рди рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЪрд╛рдмреА рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╡рд╣ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Boolean:

var dict = {};

function has(key) {
  return dict[key] !== undefined;
}

function add(key) {
  dict[key] = true;
}

рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдЕрддрд┐рд░рд┐рдХреНрдд рднрдВрдбрд╛рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЙрд╕ рдХреБрдВрдЬреА рдХрд╛ рдореВрд▓реНрдп рдЬреЛ рдХрд┐рд╕реА рдХреЛ рднреА рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ? рддреЛ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ ред

рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ Set.has()рдХреБрдВрдЬреА рд╕рддреНрдпрд╛рдкрди рд╕реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЦреЛрдЬ рд▓рдЧрднрдЧ 20-25% рддреЗрдЬ рд╣реИ Objectред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рдХрдо рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрдо рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рдФрд░ рдпрд╣ рд╕реАрдзреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреА рд╕реИрдХрдбрд╝реЛрдВ-рд╣рдЬрд╛рд░ рдЪрд╛рдмрд┐рдпрд╛рдВ рдЖрддреА рд╣реИрдВред

рддреЛ, ObjectрдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрд╛рда рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ 100 рдпреВрдпреВрдЖрдИрдбреА рдХреБрдВрдЬреА рд╣реИрдВ, рдпрд╣ 6,216 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ :



SetрдПрдХ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде - 2,632 рдмрд╛рдЗрдЯреНрд╕ :



рдЕрд░реНрдерд╛рддреН, рдпрд╣ SetрддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ2.5 рдЧреБрдирд╛ рдХрдо рдореЗрдореЛрд░реА - рд╡рд┐рдЬреЗрддрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рд╣рдо UUID рдХреБрдВрдЬреА рдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ


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

рдЕрдм рд╣рдо рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рдкреНрд░рддреНрдпреЗрдХ рдпреВрдпреВрдЖрдИрдбреА рд╣реИ рд╣реЗрдХреНрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдВрдЬреА "рд▓рд╛рдЧрдд" рд╣рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЗ 56 рдмрд╛рдЗрдЯреНрд╕ рджреЗрддреА рд╣реИ ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреВрдЫрдирд╛ рдЙрдЪрд┐рдд рд╣реИ: "рдХреНрдпрд╛ рдХрдо рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ?"

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпреВрдпреВрдЖрдИрдбреА рдПрдХ 16-рдмрд╛рдЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ред рдФрд░ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ рдмреЗрд╕ 64 рдореЗрдВ рдЗрдирдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

let str = Buffer.from(uuidstr, 'hex').toString('base64');



рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 48 рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкреВрд░реНрдг рд╣реИред рдЖрдЗрдП рд╕реАрдзреЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

let str = Buffer.from(uuidstr, 'hex').toString('binary');



рдкреНрд░рддрд┐ рдХреБрдВрдЬреА 56 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп - 40 рдмрд╛рдЗрдЯреНрд╕, рд▓рдЧрднрдЧ 30% рдХреА рдмрдЪрдд !

рдорд╛рд╕реНрдЯрд░, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ - рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ?


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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рдордп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ channel.onread- рдЕрд░реНрдерд╛рддреН, рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ "рд╢рдмреНрджрдХреЛрд╢" рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:



рджреЛрд╣рд░реА рд╕реЗрдЯ рдмреИрд░рд┐рдпрд░ рд▓рд┐рдЦреЗрдВ


рдЕрдм рдЪрд▓реЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрддреЗ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдорд╛рд╕реНрдЯрд░ рдХреЛ рдПрдХ рд╣реА рд╢рдмреНрджрд╛рд╡рд▓реА рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рднреЗрдЬрддреЗ рд╣реИрдВ (рдореВрд▓ рд░реВрдк рд╕реЗ рдпреЗ рдпреЛрдЬрдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рд╣реИрдВ), рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкрд╕реАрдиреЗ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ ... рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред !

рддреЛ рдЕрдЧрд░ рд╣рдо SetрдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА "рд░рдХреНрд╖рд╛" рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдорд╛рд╕реНрдЯрд░ рдХреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ "рд╕реБрд░рдХреНрд╖рд╛" рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд╛рдЧреВ

рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ? .. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЪреИрдирд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рддреАрди :





рд▓реЗрдХрд┐рди рдЕрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ - рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛? рдпрд╛ рдирд╣реАрдВ? .. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдХрд╛рдлреА рдХрдо рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдИрдкреАрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА!) рд╕рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред


рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕


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



рдРрд╕реА рдпреЛрдЬрдирд╛ рдХрд▓реЗрдХреНрдЯрд░ рд╕реНрддрд░ рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдХрд▓реЗрдХреНрдЯрд░ рд╣реЛрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдЯреНрд░рд┐рдЧрд░ рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА INSERT ... ON CONFLICT DO NOTHINGред

рд╣реИрд╢ рдЧрдгрдирд╛ рдХреЛ рдЧрддрд┐ рджреЗрдВ


рд╣рдорд╛рд░реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдПрдХ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреВрд░реА рд▓реЙрдЧ рд╕реНрдЯреНрд░реАрдо рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

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

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



рд╣рдордиреЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рд╕реАрдкреАрдпреВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛:

рдЫрд╡рд┐

рд╢реАрд░реНрд╖ рд▓рд╛рдЗрдиреЛрдВ рдкрд░, рдПрдордбреА 5 рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ред рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ - рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдкреВрд░реА рдзрд╛рд░рд╛ рдХреЗ рд▓рд┐рдПред

xxHash


рдЗрд╕ рднрд╛рдЧ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ, рдЗрди рд╣реИрд╢ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╣рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ?

рд╣рдордиреЗ рдПрдХ рдФрд░ рд╣реИрд╢ рдлрдВрдХреНрд╢рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - xxHash , рдЬреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдЧреИрд░-рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рдФрд░ Node.js рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ xxhash-addon рд╣реИ , рдЬреЛ рдирдП XXH3 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде xxHash 0.7.3 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЪрд▓рд╛рдХрд░ рдЬрд╛рдВрдЪреЗрдВ:

const crypto = require('crypto');
const { XXHash3, XXHash64 } = require('xxhash-addon');
const hasher3 = new XXHash3(0xDEADBEAF);
const hasher64 = new XXHash64(0xDEADBEAF);

const buf = Buffer.allocUnsafe(16);
const getBinFromHash = (hash) => buf.fill(hash, 'hex').toString('binary');

const funcs = {
  xxhash64 : (str) => hasher64.hash(Buffer.from(str)).toString('binary')
, xxhash3  : (str) => hasher3.hash(Buffer.from(str)).toString('binary')
, md5      : (str) => getBinFromHash(crypto.createHash('md5').update(str).digest('hex'))
};

const check = (hash) => {
  let log = [];
  let cnt = 10000;
  while (cnt--) log.push(crypto.randomBytes(cnt).toString('hex'));

  console.time(hash);
  log.forEach(funcs[hash]);
  console.timeEnd(hash);
};

Object.keys(funcs).forEach(check);

рдкрд░рд┐рдгрд╛рдо:
xxhash64 : 148.268ms
xxhash3  : 108.337ms
md5      : 317.584ms

рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЙрдореНрдореАрдж , xxhash3 рдерд╛ MD5 рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ !

рдпрд╣ рдЯрдХреНрдХрд░реЛрдВ рдХреЗ рдкреНрд░рддрд┐рд░реЛрдз рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рд░ рджрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджрд┐рди рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░ рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣реИрд╢ рдЪреМрд░рд╛рд╣реЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рддреАрди рджрд┐рдиреЛрдВ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЬрд┐рди рдХреЗ рд╕рд╛рде рдЬрд╛рдБрдЪ рдХреА - рдПрдХ рднреА рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рдЬреЛ рд╣рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред

рд╣реИрд╢ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ



рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ UUID рдлрд╝реАрд▓реНрдб рдХреЛ рдирдП рд╣реИрд╢ рдХреЗ рд▓рд┐рдП рдбрд┐рдХреНрд╢рдирд░реА рдЯреЗрдмрд▓ рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ UUID рджреНрд╡рд╛рд░рд╛ рдЪрд┐рдиреНрд╣рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдореМрдЬреВрджрд╛ рджреГрд╢реНрдп рджреЛрдиреЛрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдПрдХ рдФрд░ рдХреИрд╢ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрдгрдирд╛ рдХреА рдЧрдИ рдПрдордбреА 5 рдХреЗ рд▓рд┐рдПред рдЕрдм рдпрд╣ рдПрдХ рдореИрдк рд╣реЛрдЧрд╛ , рдЬрд┐рд╕рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ xxhash3 рд╣реИрдВ, рдорд╛рди рдПрдордбреА 5 рд╣реИрдВред рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо "рдорд╣рдВрдЧреЗ" MD5 рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреИрд╢ рд╕реЗ рд▓реЗрдВ:

const getHashFromBin = (bin) => Buffer.from(bin, 'binary').toString('hex');
const dictmd5 = new Map();
const getmd5 = (data) => {
  const hash = xxhash(data);
  let md5hash = dictmd5.get(hash);
  if (!md5hash) {
    md5hash = md5(data);
    dictmd5.set(hash, getBinFromHash(md5hash));
    return md5hash;
  }
  return getHashFromBin(md5hash);
};

рд╣рдо рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ - рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╣реИрд╢ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрд╛ рдЕрдВрд╢ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЪреАрдпрд░реНрд╕!



рддреЛ рдЕрдм рд╣рдо xxhash3 рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ MD5 рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд MD5 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╢рдмреНрджрдХреЛрд╢ рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ - рдпрджрд┐ рдпрд╣ md5 рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬреЗрдВред

рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдВрдЪреЗрдВ ... рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдордбреА 5 рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд▓реА рд╣реИ рддреЛ рд╢рдмреНрджрдХреЛрд╢ рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╢рдмреНрджрдХреЛрд╢ рдХреИрд╢ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдордбреА 5 рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХреИрд╢ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:



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

рдзрдиреНрдпрд╡рд╛рджKilor рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдПред

All Articles