QOI рдЫрд╡рд┐ рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рд╛рд░реВрдк рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдПрдХ рдирдпрд╛ рд╣рд▓реНрдХрд╛, рджреЛрд╖рд░рд╣рд┐рдд рдЫрд╡рд┐ рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рд╛рд░реВрдк рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдХреНрдпреВрдУрдЖрдИ (рдХрд╛рдИрдЯ рдУрдХреЗ рдЗрдореЗрдЬ), рдЬреЛ рдЖрдкрдХреЛ рдЖрд░рдЬреАрдмреА рдФрд░ рдЖрд░рдЬреАрдмреАрдП рд░рдВрдЧ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреАрдПрдирдЬреА рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрдпреВрдУрдЖрдИ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬреЛ SIMD рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, libpng рдФрд░ stb_image рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдореЗрдВ 20-50 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдФрд░ 3 рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдореЗрдВ -4 рдЧреБрдирд╛ рддреЗрдЬред рд╕рдВрдкреАрдбрд╝рди рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, QOI рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ libpng рдХреЗ рдХрд░реАрдм рд╣реИ (рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдореЗрдВ рдпрд╣ рдХрдорддрд░ рд╣реИ), рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ stb_image (20% рддрдХ рдХрд╛ рд▓рд╛рдн) рд╕реЗ рдХрд╛рдлреА рдЖрдЧреЗ рд╣реИред

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

QOI рдкреНрд░рджрд░реНрд╢рди рдПрдиреНрдХреЛрдбреЗрдб рдЫрд╡рд┐ (O(n)) рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ рдкреНрд░рдХреГрддрд┐ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдПрдХ рдкрд╛рд╕ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреБрдиреЗ рдЧрдП 4 рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЕрдЧрд▓рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдкрд┐рдЫрд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреЗрд╡рд▓ рдмрдврд╝рддрд╛ рд╣реИред рдпрджрд┐ рдкрд┐рдХреНрд╕реЗрд▓ 64 рдкрд┐рдЫрд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдмрдлрд╝рд░ рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рдкрд┐рдЫрд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ 6-рдмрд┐рдЯ рдСрдлрд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рддреЛ рдЕрдВрддрд░ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЬреЛ 2,4, 5 рдФрд░ XNUMX рдмрд┐рдЯреНрд╕ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИ)ред рдпрджрд┐ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреВрд░реНрдг рдЖрд░рдЬреАрдмреАрдП рдорд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ