āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻāĻāĻāĻ¯āĻŧā§āĻ, āĻ˛āĻ¸āĻ˛ā§āĻ¸ āĻāĻŽā§āĻ āĻāĻŽā§āĻĒā§āĻ°ā§āĻļāĻ¨ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ - 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