QOI āĻ‡āĻŽā§‡āĻœ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡

āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻ‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻŸ, āĻ˛āĻ¸āĻ˛ā§‡āĻ¸ āĻ‡āĻŽā§‡āĻœ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ - QOI (āĻŦā§‡āĻļ āĻ“āĻ•ā§‡ āĻ‡āĻŽā§‡āĻœ), āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ RGB āĻāĻŦāĻ‚ RGBA āĻ•āĻžāĻ˛āĻžāĻ° āĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ–ā§āĻŦ āĻĻā§āĻ°ā§āĻ¤ āĻ‡āĻŽā§‡āĻœ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ PNG āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, C āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ QOI āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡āĻ° āĻāĻ•āĻ•-āĻĨā§āĻ°ā§‡āĻĄā§‡āĻĄ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨, āĻ¯āĻž SIMD āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻž, libpng āĻāĻŦāĻ‚ stb_image āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ—āĻ¤āĻŋāĻ¤ā§‡ 20-50 āĻ—ā§āĻŖ āĻĻā§āĻ°ā§āĻ¤, āĻāĻŦāĻ‚ 3 āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ—āĻ¤āĻŋāĻ¤ā§‡ -4 āĻ—ā§āĻŖ āĻĻā§āĻ°ā§āĻ¤āĨ¤ āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡, QOI āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ libpng-āĻāĻ° āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ (āĻ•āĻŋāĻ›ā§ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ•āĻŋāĻ›ā§āĻŸāĻž āĻāĻ—āĻŋāĻ¯āĻŧā§‡, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ¨āĻŋāĻ•ā§ƒāĻˇā§āĻŸ), āĻ¤āĻŦā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ stb_image āĻĨā§‡āĻ•ā§‡ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ (20% āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ˛āĻžāĻ­)āĨ¤

C āĻ¤ā§‡ QOI āĻāĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻžāĻ¤ā§āĻ° 300 āĻ˛āĻžāĻ‡āĻ¨āĨ¤ āĻ‰ā§ŽāĻ¸ āĻ•ā§‹āĻĄ MIT āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ‰āĻ¤ā§āĻ¸āĻžāĻšā§€āĻ°āĻž Go, Zig āĻāĻŦāĻ‚ Rust āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻ¨āĻ•ā§‹āĻĄāĻžāĻ° āĻāĻŦāĻ‚ āĻĄāĻŋāĻ•ā§‹āĻĄāĻžāĻ°ā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻĄāĻŽāĻŋāĻ¨āĻŋāĻ• āĻ¸āĻœāĻžāĻŦāĻ˛āĻ‰āĻ¸ā§āĻ•āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡, āĻāĻ•āĻœāĻ¨ āĻ—ā§‡āĻŽ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ MPEG1 āĻ­āĻŋāĻĄāĻŋāĻ“ āĻĄāĻŋāĻ•ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ QOI āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ˛ā§‡āĻ–āĻ• āĻĻā§‡āĻ–āĻžāĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻ¯ā§‡ āĻ…āĻ¤āĻŋ-āĻœāĻŸāĻŋāĻ˛ āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻšāĻŋāĻ¤ā§āĻ° āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤

QOI āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻŋāĻ¤ā§āĻ° (O(n)) āĻāĻ° āĻ°ā§‡āĻœā§‹āĻ˛āĻŋāĻ‰āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻŋāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨āĨ¤ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ•ā§‹āĻĄāĻŋāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸ā§‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ - āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŦāĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ 4āĻŸāĻŋ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋāĻ¤ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛āĻŸāĻŋ āĻ†āĻ—ā§‡āĻ°āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛āĻŸāĻŋ 64 āĻ…āĻ¤ā§€āĻ¤ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ āĻŦāĻžāĻĢāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŽāĻžāĻ¨āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ 6-āĻŦāĻŋāĻŸ āĻ…āĻĢāĻ¸ā§‡āĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ¤ā§€āĻ¤ā§‡āĻ° āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ā§‡āĻ° āĻ°āĻ™ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ†āĻ•āĻžāĻ°ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ (2,4, 5 āĻāĻŦāĻ‚ XNUMX āĻŦāĻŋāĻŸā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŽāĻžāĻĒāĻ¸āĻ‡ āĻ°āĻ™ā§‡āĻ° āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚)āĨ¤ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯ āĻ¨āĻž āĻšāĻ˛ā§‡, āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ rgba āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨