рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдореИрдерд┐рдпрд╕ рдмреНрдпреВрд╕ рдХреЗ рд▓реЗрдЦ " рд╡рд╛рд░реНрдорд╣реЛрд▓ рдЗрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБред

рдХрдВрдкреНрдпреВрдЯрд░ рджрд┐рд▓рдЪрд╕реНрдк рдорд╢реАрдиреЗрдВ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡реЗ рд╣рдореЗрдВ рдЖрджрд░реНрд╢ рдпрд╛рдВрддреНрд░рд┐рдХ рдЧрдгрд┐рддрдЬреНрдЮ рд▓рдЧрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреБрдгрд╛ рдФрд░ рдШрдЯрд╛рд╡ рдХреЗ рдЕрдЪреНрдЫреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдореВрд░реНрдд рдХрд╛рдлреА рднреНрд░рд╛рдордХ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЗрд╕ рд╕рдордЭ рд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрдгрд┐рддреАрдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛) рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдпрд╛ рд╡рд░реНрдорд╣реЛрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╢реЗрд╖ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╡рд░реНрдорд╣реЛрд▓
рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рд░рд┐рдВрдЧ рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рд░рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝рд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдФрд░ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЖрдВрдХрдбрд╝реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛, рдбреЗрдЯрд╛ рдХреЛ рдмрдлрд░ рдХрд░рдирд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рджреЗрдЦреЗрдВ:
const list = new Array(15000) function set (i, item) {
рдпрд╣ рдХреЛрдб рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ? рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдЧрддрд┐ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ
console.time() for (var i = 0; i < 1e9; i++) { set(i, i) } console.timeEnd()
рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, 1 рдмрд┐рд▓рд┐рдпрди рдЖрд╡реЗрд╖рдг рдХреЗ рд▓рд┐рдП ~ 4 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЗрдП рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╡рд░реНрдорд╣реЛрд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдХрд░ рдПрдХ рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛ рдХрд░реЗрдВ:
// 15000 16384 const list = new Array(16384) function set (i, item) { // % - , // // , i list[i % list.length] = item }
рдЖрдЗрдП рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдкрд░реАрдХреНрд╖рдг ~ 1.5 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖред рд╕рд░рд▓ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рдХрд╛рд░рдг рджреЛрдЧреБрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╡реГрджреНрдзрд┐ред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реБрдб рдХреЗ рддрд╣рдд, рдХрдВрдкреНрдпреВрдЯрд░ рдЖрдзрд╛рд░ 2 рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╢реЗрд╖ рд╡рд┐рднрд╛рдЬрди (% рд╕рдВрдЪрд╛рд▓рди) рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдЧрдгрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ 2 (2 ^ n) b 16384 рдХрд╛ рдЧреБрдгрдХ рд╣реИ рдпрд╣ 2 ^ 14. рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдВрдкреНрдпреВрдЯрд░ рдмрд╛рдЗрдирд░реА рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЕрдВрддрд┐рдо n рдмрд┐рдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЬрдм рдРрд╕рд╛ рдСрдкрд░реЗрд╢рди 353 500% 16 384 рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? 353 500 рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ 1010110010011011100 рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ред 16384 == 2 ^ 14 рдХреЗ рдмрд╛рдж рд╕реЗ - рд╣рдореЗрдВ рдЕрдВрддрд┐рдо 14 рдмрд┐рдЯреНрд╕ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - 10101 (10010011011100) рдпрд╛ 9 346ред
рд╣рдо рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реЗ рд╡рд░реНрдорд╣реЛрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд┐рдо n рдмрд┐рдЯреНрд╕ рд▓реЗрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рддреНрд╡рд░рд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ (2 ^ n) - 1 рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдирд░реА рдФрд░ (рдСрдкрд░реЗрд╢рди) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
const list = new Array(16384) function set (i, item) {
рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдШрдЯрдХрд░ ~ 1 s рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдкрд╣рд▓реЗ рд░рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЪрд╛рд░ рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рд╕рдордЭ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕реНрдорд╛рд░реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╛ VMs рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╢реЗрд╖ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдХреЗ рдФрд░ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд╡реАрдирддрдо V8 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ VM (NodeJS рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ) рдмрд╕ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред
рдиреНрдпреВрдореЗрд░рд┐рдХрд▓ рд╡рд░реНрдорд╣реЛрд▓
рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЕрдгреБ рд╕рдордЭ рд╣реИ рдХрд┐ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ 32-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдФрд░ рд╣рдореЗрдВ 64 рдмрд┐рдЯ рдХреИрд╕реЗ рдорд┐рд▓реЗ? рдФрд░ 32 рдмрд┐рдЯреНрд╕ рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 16 рдмрд┐рдЯреНрд╕ рдереЗред рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЛрдЪрддреЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рддрдиреА рд░реИрдо рд╣реИред 2 ^ 32 = 4294967296 рдпрд╛ 4 рдЬреАрдмреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ 4 рдЬреАрдмреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рд╣рдо JS рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЙрд╕ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ 64-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ 64-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдорд┐рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдСрдкрд░реЗрд╢рди 32-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рддреЗрдЬ рд╣реЛ рдЧрдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдереЗред
рд╣рдо рдЗрд╕ рд╡рд░реНрдорд╣реЛрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ Uint8Array рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Unit8Arrays рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡реЗ NodeJS рдореЗрдВ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдпрд╛ рдмрд╕ "рдХреНрд▓реАрди" рдореЗрдореЛрд░реАред
function copy (input, output) { // input.length <= output.length for (var i = 0; i < input.length; i++) { // 8- (byte) output[i] = input[i] } }
рдлрд┐рд░ рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдХрд░ рдЧрддрд┐ рдХреЛ рдорд╛рдкреЗрдВред
// 1MB Uint8Arrays const input = new Uint8Array(1024 * 1024) const output = new Uint8Array(1024 * 1024) console.time() for (var i = 0; i < 1e4; i++) { copy(input, output) } console.timeEnd()
рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо ~ 7.5 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖред рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд░реНрдорд╣реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? Uint8Array рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ 8 рдмрд┐рдЯреНрд╕ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 64-рдмрд┐рдЯ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реЛрдиреЗ рдкрд░ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 64 рдмрд┐рдЯреНрд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ Uint8Array рдХреЛ рдПрдХ рдлреНрд▓реЛрдЯ64Array рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рднреА рдЦрд░реНрдЪ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
function copy (input, output) { // input.length <= output.length // 64- // , // 64- // BigInts JavaScript, BigInt64Array. const input64 = new Float64Array(input.buffer, input.byteOffset, input.length / 8) const output64 = new Float64Array(output.buffer, output.byteOffset, output.length / 8) for (var i = 0; i < input64.length; i++) { // 64- output64[i] = input64[i] } }
рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдореЗрдВ 1 рд╕реЗрдХрдВрдб рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдЧрддрд┐ рдореЗрдВ 8 рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рджреЗрддрд╛ рд╣реИред
рдирдХрд▓ рдХреЗ рд▓рд┐рдП, Uint8Array рдХреЗ рд▓рд┐рдП array.set (otherArray) рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рджреЗрд╢реА рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджреЗрддрд╛ рд╣реИ - рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд░реНрдорд╣реЛрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИред рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ ~ 0.2 рд╕реЗрдХрдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛, рдЬреЛ рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 5 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдХреАрдбрд╝рд╛ рд╕реЗ рднрд░реА рд╣реИ
рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд░реНрдорд╣реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдФрд░ рдХреАрдбрд╝реЗ рд╣реИрдВред рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╣реИ Math.clz32 , рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ 32-рдмрд┐рдЯ рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╢реВрдиреНрдп рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рд╣рдо рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 4 рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдореЗрдВ 4 рдЧреБрдирд╛ рдХреА рдХрдореА рдЖрдИ рдФрд░ рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ рддреЗрдЬрд╝реА рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред
рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рди рддрдм рднреА рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ:
рдУрд▓реНрдЧрд╛ рдкреЗрд░реЗрд╡реЗрд░реНрдЬрд╝реЗрд╡рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рд╕рдорд╛рдпреЛрдЬрди рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж