рдХреЗрд╡рд▓-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣ рдкрдврд╝реЗрдВ: рдореИрдЪреЛрдВ рдкрд░ рд╕рд╣реЗрдЬреЗрдВ

рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рдо рдХреЗ рдЕрдВрдд рддрдХ) рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдирд╕реЗрдВрдмрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рдорд╛рдирд╡ рдЬреАрдиреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА (miRNAs рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рд╕рд╣рд┐рдд, рдЖрджрд┐, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ 50,000) рд╕реЗ рдШрдЯрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдорд╛рдирдХ ArrayList рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ 32-рдмрд┐рдЯ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдкрд░ рдЖрдк 4 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЦрд░реНрдЪ рдХрд░реЗрдВрдЧреЗред рдХреНрдпрд╛ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдЕрдм рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛?

рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ: рдпрд╣ рдПрдХ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдмрдЪрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк -XX: + UseCompressedStrings: рдпрд╣ рди рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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



рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ, ArrayList рдХрд╛ рд╡рдЬрд╝рди рдмрд╣реБрдд рдХрдо рд╣реИ - 24 рдмрд╛рдЗрдЯреНрд╕ред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рд░рдгреА [] рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ ArrayList рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрдгрд╛рдпрдХ рд░реВрдк рд╕реЗ рддреМрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ 90% рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ [[] рд╕рд░рдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рд╣реЛрддреА рд╣реИред

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

List<String> genes = readGenes(); genes = Arrays.asList(genes.toArray(new String[genes.size()])); 


рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рдЕрдм рдПрдХ ArrayList (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдПрдХ ArrayList, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛) рдирд╣реАрдВ рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рд╡рд╛рдВрдЫрд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд░рдгреА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреЙрдкреА рдкрд░ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдЕрдм рдмрд░рдХрд░рд╛рд░ рд╕реЗрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рд╕рд░рдгреА рдереЛрдбрд╝реА рдЫреЛрдЯреА рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рд╣рдордиреЗ 0.44% рд╕реНрдерд╛рди рдмрдЪрд╛ рд▓рд┐рдпрд╛ред рдЦреИрд░, рдХреБрдЫ рднреА рдирд╣реАрдВ, рд╣рдо рдмрд╕ рдЧрд░реНрдо рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП рдЗрди рдЪрд╛рд░ рдХреЛ рджреЗрдЦреЗрдВ [] рд╕рд░рдгрд┐рдпрд╛рдБред рдЙрдирдореЗрдВ "ENSG00000121410" (15 рдЕрдХреНрд╖рд░ - 30 рдмрд╛рдЗрдЯреНрд╕) рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреАрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреА рдПрдХ рдФрд░ 8 рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рд▓рдВрдмрд╛рдИ рдХреЗ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВред рдФрд░ рдЗрди 42 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ 8 рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд 6 рдЕрдкреНрд░рдпреБрдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдЕрднреА рднреА рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, 48 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ 30 рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддреА рд╣реИрдВ (+ UseCompressedStrings рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ 15 рддрдХ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрдкрд╛рдд рдФрд░ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛)ред рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

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

 public static List<String> compactify(Collection<String> list) { StringBuilder sb = new StringBuilder(); for( String item : list ) sb.append(item); String data = sb.toString(); List<String> result = new ArrayList<String>(list.size()); int index = 0; for( String item : list ) { result.add(data.substring(index, index + item.length())); index += item.length(); } return result; } 


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



рд╣рд╛рдБ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рдордиреЗ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд▓рдЧрднрдЧ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмрдЪрд╛ рд▓рд┐рдпрд╛, рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореВрд▓ рдЖрдХрд╛рд░ рдХреЗ 24% рдЬреАрддрдиреЗ рдореЗрдВред рдпрджрд┐ рдЖрдкрдХреА рд╕рд░рдгреА рдореЗрдВ рд░реЗрдЦрд╛рдПрдВ 15 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЫреЛрдЯреА рд╣реИрдВ, рддреЛ рдмрдЪрдд рдФрд░ рднреА рдЕрдзрд┐рдХ рд╣реЛрдЧреАред рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ ArrayList рдмрдирд╛рддреЗ рд╕рдордп рд╣рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ [] рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╣рдордиреЗ рдкрд╣рд▓рд╛ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдЦреЛрдпрд╛ред

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

рдлрд┐рд░ рднреА 24% рдХреБрдЫ рдХрдо рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдбреЗрдЯрд╛ [char] рдореЗрдВ рд╣реА) рдЖрдВрдЦ рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдорд╛рдВрдЧ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛рдЯ рд▓реЗрдВ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реВрдЪреА рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдСрдлрд╕реЗрдЯ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 public class CompactStringList extends AbstractList<String> implements RandomAccess { private String data; private int[] offsets; public CompactStringList(Collection<String> list) { StringBuilder sb = new StringBuilder(); offsets = new int[list.size()]; int offset = 0, i = 0; for( String item : list ) { sb.append(item); offsets[i++] = offset; offset+=item.length(); } data = sb.toString(); } public String get(int index) { return index == offsets.length - 1 ? data.substring(offsets[index]) : data.substring(offsets[index], offsets[index + 1]); } public int size() { return offsets.length; } } 


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



рдЕрдм рд╣рдордиреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 55.5% рдмрдЪрд╛рдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреГрддреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

Source: https://habr.com/ru/post/In145145/


All Articles