рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг рд╕реЗ рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 6 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдерд╛, рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдлрд┐рд░ рдореИрдВрдиреЗ рд▓рдВрдмреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдЖрд╡рдзрд┐рдХ glitches рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдордирд╛ рдХрд░ рджрд┐рдпрд╛ред рдЬрдм рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ 11 рд╡рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╛рд░реНрдб рдореЗрдВ рдерд╛, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реБрдИ рдФрд░ рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреА рдХрд┐рд╕реНрдордд рдЖрдЬрдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реИ ...
рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде, рдЬрдм рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ 768MB рдореЗрдореЛрд░реА 80% рдкрд░ рднрд░реА рд╣реБрдИ рдереА, рддреЛ рдХреЛрдИ рднреА рдХреНрд░рд┐рдпрд╛, рдЬреИрд╕реЗ рдорд╛рдЙрд╕ рдХреЛ рд╣рд┐рд▓рд╛рдирд╛, рдлрд╝реЛрдХрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдмрд╕ рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдпрд╛ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рд╕реАрдзреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрдд рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ рд╢реЗрд╖ 20% рдореЗрдореЛрд░реА рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдХрд╛рдо рдореЗрдВред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдирд┐рд░рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЕрдзрд┐рднрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЬ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдИ рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рд╕рд╣рдЬ рд░реВрдк рд╕реЗ, рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рд░ рдорд╛рдЙрд╕ рдЖрдВрджреЛрд▓рди рдФрд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЬреИрд╕реА рдХреЛрдИ рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рддрдм рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдмреАрдЬ рдХреЗ рд▓рд┐рдП - рд╕рдВрдкрд╛рджрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдорд╛рдЙрд╕ рд▓реЗ рдЬрд╛рдиреЗ рдФрд░ 1000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдкрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЗ 2 рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:
рдЖрдВрджреЛрд▓рди:

рд╕реНрдХреНрд░реЙрд▓:

рдЪрд░рдо рдкрд░ рдХреЛрдб рд╕рдВрдкрд╛рджрди рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреБрдЫ рд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдЧрднрдЧ 100MB рдореЗрдореЛрд░реА рдЦрд╛рддреА рд╣реИ ... рдХрд┐рд╕реА рднреА рдорд╛рдЙрд╕ рдЖрдВрджреЛрд▓рди рд╕реЗ рджрд╕рд┐рдпреЛрдВ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ ... рдЗрди рд╕рдмрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдм рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рддреЛ, рдЪрд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ:

рд╕реНрдХреНрд░реЛрд▓ рдкреНрд░рддрд┐ 1.5 рдорд┐рд▓рд┐рдпрди рдСрдмреНрдЬреЗрдХреНрдЯ рдереЛрдбрд╝рд╛ рдорд╣рдВрдЧрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ? рд▓реЗрдХрд┐рди рдЕрдм рдХрдореЛрдмреЗрд╢ рдпрд╣ рд╕рд╛рдл рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рд╣реИ IntervalTreeImpl рдФрд░ рдЗрд╕рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ NodeCachedOffsetsред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд▓рд╛рд╢рдиреЗ рдХреЗ рд▓рд┐рдП 2 рддрд░реАрдХреЗ рд╣реИрдВ: 1) IntervalTreeImpl рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ NodeCachedOffsets рдХрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреНрдпреЛрдВ рд╣реИрдВ (рд╡реИрд╕реЗ, рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж); 2) рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкрд╣рд▓реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдХрд┐ рдЖрдЦрд┐рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рд╖реНрдХрд░реНрд╖ рд╕рд╣реА рдереЗ ... рдЗрд╕рд▓рд┐рдП, рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдЖрдк
рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рд╕реНрд╡рдпрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдБ рд╣реИред
рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ:

рдФрд░

ComputeDeltaUpToRoot () рдкрджреНрдзрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рд╕реНрдЯреИрдХ рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдХреА рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рднреА рдЕрдХреНрд╕рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдХреЛрдб рдЪреЗрд╣рд░реЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ - рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмрд╣реБрдд рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд NodeCachedOffsets рд╡рд░реНрдЧ рдХреА рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░рдВрддрд░ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рдмрдбрд╝реЗ рдЖрджрд┐рдо (рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╕рд╛рде рдпрд╛ рд╕рдВрдкрд╛рджрди рд╡рд┐рдВрдбреЛ рдХреЛ рдЖрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрджрд▓рдирд╛ (рдмрд╣реБрдд рд╕рд╛рд░реА рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди ... рдЬрдм рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рддреЛ рдореЗрд░рд╛ рдЖрд╢реНрдЪрд░реНрдп рдХреНрдпрд╛ рдерд╛ (git: //git.jetbrains.org/idea/community.it), рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ 5 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рднреА ... рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ
рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ (11.1.2) рдпрд╣ рдлрд┐рдХреНрд╕ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ... рдлрд┐рд░ рднреА, рдпрд╣ рдХрд╛рдлреА рд╕реБрдЦрдж рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЙрддреНрдкрд╛рдж рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВред