Розробники · Base64 енкодер & decoder
Скільки більше, що Base64 робить ваші дані? Про нас 4/3 накладна робота
· Як працює
Опубліковано ToolAcre · Редакція журналу
бази64 коди продуктивність

Base64 виводу становить близько третини більше, ніж його вхід, плюс наповнювачі і можливо лінійні перерви. Ця пошта подає точну формулу і застосовує її до реалістичних розмірів, так що ви можете судити вартість.
Про нас 30 KB Ікона, що стала 40 KB в пачці — бетонний стрибок розмірів, який здивував огляд збірки
Р 30 KB Ікона підкреслена як Base64 CSS файл стає 40 KB, і будувати питання огляду виникає: де було додаткове 10 KB Увійти Витратний фактор для Base64 завжди 4/3: кожні три байти вводять чотири байти виведення (чотири символів). Для 30 KB вхід ()30,000 bytes), розділіть на три, щоб отримати 10,000 групи, розмножуються чотирма, щоб отримати 40,000 bytes вихід.
Math is deterministic and unavoidable: Base64 не формат стиснення. У разі зміни витрат на актив 33% більше пропускної здатності і завантаження сторінок швидше, тому що один менше HTTP запит, що є торгово-оффом, варто вимірювати. Вартість 33% більше і навантажень повільніше, нахил не варто. Про нас 4/3 співвідношення надходить від бітового макета. Три байти 24 bits; чотири символи Base64 носять 24 bits (вчитель несе шість біт).
Чому 4/3 є підлогою — шість біт за характером проти вісімки за байтом, і де решта накладає від
До сих пір співвідношення 1:1. Але Base64 символи є текстом (ASCII 0–127й середній ASCII характер в UTF-8 Українська1 кодування є одним байтом. Так чотири символи Base64 є чотири байти виведення для введення трьох байтів, співвідношення 4/3. Це не універсальний: якщо Base64 були виведені в якості бінарного формату (одна байт за характер, упаковані в шість біт), співвідношення буде 3/4 (компресія).
Оскільки Base64 призначений для текстового транспорту, він використовує текстові символи та вартість 33% збільшення розмірів. Накладка додає невеликий запас в кінці. Якщо довжина входу кілька трьох, не потрібно накидатися. Якщо довжина введення 1 Моди 3 (один байт з декількох), два шарфики = додано, збільшення виходу 2. Якщо 2 Моди 3, один шар наповнювача = додано, збільшення 1.
Точна формула з наповнювачем — ceil(n/3) × 4 персонажі, і ефект для введення 1, 2 і 3 bytes
Для великих вводів маржа недбала: 300-за потреби введення 400 символи плюс у більшості двох сипучих персонажів, різниця менше, ніж 0.5%. Для крихітних входів (1–3 bytes), наповнювачі: один байт виробляє YQ== (чотири символів), розширення 4x. Але в середньому по файлів переважають великі. Точна формула - ceil(n / 3) × 4 символи, де n вводять кількість байтів.
Для n = 1, пн(-ов)1/3) × 4 = 1 × 4 = 4. Для n = 2, пн(-ов)2/3) × 4 = 1 × 4 = 4. Для n = 3, пн(-ов)3/3) × 4 = 1 × 4 = 4. Для n = 4, пн(-ов)4/3) × 4 = 2 × 4 = 8. Для n = 30000, пн(-ов)30000/3) × 4 = 10000 × 4 = 40000. Невеликі вводи пояснюють, чому «про одну третину» не є точним для кожного значення. Один байт все ще займає чотирикутний блок, як робимо два байти. Співвідношення підіймає чотири третини тільки стільки повних трьохбайтних груп, які домінують кінцевий блок підкладки.
Приклад роботи: вимірювання 20-характер UTF-8 string — підрахунк байтів, а не символів, потім довжина бази64
Стельові функції облікові записи для фінальної групи, що не завершуються декількома з трьох. Як n виростає великий, ceil(n/3) підходи/3, так вихідні підходи (n/3) × 4 до 4/3, Про нас 4/3 співвідношення.
Замір бетонної нитки: 20 символи змішані ASCII, акценти та смайлики. Кількість символів 15 в JavaScript (Смайли рахують один). UTF-8 кількість байтів відрізняється: ASCII Листи 1 byte кожен, підкреслений лист 2 bytes (0xC3 0xA9 для é), смайл 4 bytes (0ксФ0 0кс9Ф 0кс98 0кс80). Звіти інструменту UTF-16 символи, пункти коду Unicode і UTF-8 байтів окремо. Ця відмінність запобігає вироку двадцять символів, що містить багатобайтні символи від вартості двадцять байтів. Закодованою довжиною слід враховувати байт, а не те, що кількість людей на екрані.
Лінійні перерви і MIME обгортання — як 76- форматування люльвів додає ще кілька відсотків
Всього 18 bytes. Base64 кодує ці: ceil(18/3) × 4 = 6 × 4 = 24 символи. З 18 кілька трьох, не потрібно накидатися. Base64 вихід 24 символи. Добавки кодування 24 - 18 = 6 bytesабо 33%, підтвердження 4/3 формула. MIME Баз64 обгортання вводить додаткові накладні. Класика MIME обгортання на 76 символи на лінії і додає новий рядок.
Р 400-character Base64 виходить приблизно 405 bytes з новими лініями вставляються. Для кожного 76 Символи Base64 виводу, одна нова лінія вставка. Для великих файлів додайте менше 2%. Для вкладення електронної пошти, нова лінія конвенції є стандартним і очікуваним парсерами; інструмент приймає загорнуті Base64 і декодує правильно. Складання взаємодій ускладнений аналіз розмірів. Сирі бінарні дані (зображення, відео) компреси по-різному, ніж Base64 текст. ToolAcre вставляє нову лінію після кожного настроюється 76-зрізка і виключення нових ліній з його відображення зашифрованою заміром. Бюджет дроту повинен додавати сепаратори назад; порівняння видимих вимірювань окремо описує символи Base64, не кожен передається лінійним байтом.
Компресійні взаємовідносини — чому текст Base64 прагне стискати гірше, ніж сирі байти він являє собою
Base64 string може стискати на 60% його розмір з gzip, і зображення може стискати 25%. Оскільки gzip дивиться на повторне виконання шаблонів, текстове представлення (letters A–Z плюс + / або - ) має менше повторення, ніж бінарні дані. Увімкнення зображення з компресією часто коштує більше в коді, ніж вбудовування окремо. Для шрифтів, зокрема, комплексний з багатьма гліфами, базовим нахилом бази64 може бути неефективний.
Аналіз торговельної марки залежить від конкретного контексту. Увімкнення невеликих даних URI (10–50 bytes) може бути гідним, щоб уникнути HTTP запит. Наплавлення великого активу100 KBне може. Компресія залежить від візерунків як на джерело, так і його базове представлення Base64, тому універсальний відсоток стисненого надходу буде найрізноманітнішим. Виміряйте фактичний актив до і після збереження навколишнього середовища. Визначена вартість є некомпресованим підрахунком символів, що надається формулою блоків.
Що це не обкладинка — вимірювальна продуктивність або декодування, а також налаштування форматів, таких як WebP
Якщо активувати CDN впритул до користувача, незважаючи на те, що запит не приносить користь. Якщо актив на одному сервері і завантаження вимагає додаткового туру поїздки, то може бути виправдано. Вимірювання є важливим: використовувати формулу, щоб компute inline size, додати кількість символів до CSS або HTML файл, вимірювати загальний розмір та час завантаження.
33% overhead є певним; вигода продуктивності не є. URL-безпечна база64 (base64url) має однаковий 4/3 співвідношення, просто різні символи. Видалення накидок зберігає два символи в найгіршому випадку. Для великих файлів, недбалий. Для JWT Tokens (трійка базових64url сегментів до точок), видалення накипу звичайно, але зберігає дуже мало місця; реальний розмір - токен зміст, не кодування накладної. Швидкість передачі, декодування зображення та альтернативні формати, такі як WebP вимагають різних вимірювань. Короткий рядок Base64 не вдається швидше живопису, і цей текст-тільки інструмент не приймає файл зображення. Його надійний внесок – арифметичне для UTF-8 текст введено в панель.
Поруч: бюджет третій додатковий — як Base64 енкодер & decoder дає вам реальну зашифровану довжину будь-якого тексту, так що ви можете вимірювати, а не вгадати
Пригнічення також кодує текст аналогічно; чи є останні два символи == або рядок коротше, що робить майже не різницю у виходу gzip. Base64 Encoder & decoder звітує як вхідний обліковий запис, так і кількість вихідних символів. Для будь-якого текстового коду можна побачити точний розмір. Для UTF-8 рядки з багатобайтними героями, інструмент показує, що кількість символів (що див.) відрізняється від кількості байтів (хоча Base64 кодів).
Р 10- stringcharacter може бути 15 bytes якщо містить акценти та смайлики, що виробляють 20 символи Base64 виходу замість 4/3 співвідношення на основі кількості символів. Розуміння чіткості, чому підкреслення смайли-рожевої іконки ASCII мистецтво: не смайлики коштує більше, UTF-8 байтів вони представляють. За заявою кандидата на винахід, записувати інструмент UTF-8-злічити кількість і закодовано кількість символів по боці. Далі включають URI префікс, CSS Синтаксис і будь-яке обгортання, необхідне для призначення. Це повне вимірювання є більш корисним, ніж повторення закругленого відсотка без його витрат на обрамлення.