Сравнение больших файлов

Сравните два больших локальных файла построчно или побайтно — с настройками пробелов, концов строк и кодировки и отчётом для скачивания.

Введённые данные и файлы остаются в браузере

Файлы

Исходный файл

Любой локальный файл. Он остаётся на этом устройстве.

Изменённый файл

Любой локальный файл. Он остаётся на этом устройстве.

Оба файла читаются в Web Worker блоками по 1 МиБ. От каждой строки хранится только хэш, а текст на экране дочитывается из файлов. Ничего не загружается и не сохраняется.

Различия

Выберите исходный и изменённый файл, чтобы увидеть изменённые строки или диапазоны байтов.

На этой странице

Сравнение больших файлов сопоставляет два локальных файла, которые не помещаются в текстовое поле: многогигабайтные логи, выгрузки CSV, SQL-дампы или сборки. Текстовые файлы сравниваются построчно, бинарные — побайтно; результат — виртуализированная таблица изменений и отчёт для скачивания.

Подробное описание функциональности

Оба файла читаются блоками по 1 МиБ внутри Web Worker. Текст не хранится: каждая строка превращается в 64-битный хэш, поэтому файл стоит около 8 байт на строку. Настройки пробелов и концов строк применяются при вычислении хэша: сравнивать точно, не учитывать пробелы в конце строки, не учитывать их количество или не учитывать совсем; CRLF и LF можно считать одинаковым концом строки. UTF-8 и UTF-16 хэшируются как символы Юникода, поэтому один и тот же текст в обеих кодировках совпадает. Устаревшие кодировки вроде Windows-1251 или Shift_JIS сравниваются по байтам.

Сопоставление строк сначала пропускает общее начало и конец, затем закрепляется на строках, которые встречаются ровно один раз в обоих файлах (patience diff), и выравнивает промежутки алгоритмом Майерса. Промежуток, на который ушло бы слишком много времени, показывается как одна замена, и страница об этом сообщает. Из файлов дочитываются только строки на экране, поэтому прокрутка миллионов изменённых строк остаётся лёгкой.

Бинарный режим сравнивает байты блоками и перечисляет все различающиеся диапазоны со смещением, длиной и первыми 16 байтами каждой стороны; разница в размере становится последним диапазоном. Отчёт для текста — unified diff (.diff), для бинарных файлов — CSV. Оба записываются в выбранный файл потоком.

Практические примеры

Два лога: лог на 2 миллиона строк против копии, где у 40 строк уровень сменился с INFO на WARN, показывает 40 удалённых и 40 добавленных строк в отдельных блоках с тремя строками контекста.

Копии из Windows и Unix: файл с CRLF против той же копии с LF не даёт различий, пока включена настройка концов строк; выключите её — и отличаться будет каждая строка.

Другие отступы: выберите «Не учитывать количество пробелов», и строки, которые отличаются только пробелами или табуляцией между словами, считаются одинаковыми.

Образы прошивки: в бинарном режиме две сборки, у которых отличаются строка версии и контрольная сумма, дают два коротких диапазона со старыми и новыми байтами в hex.

Как использовать этот инструмент

  1. Выберите файлы

    Перетащите или выберите исходный и изменённый файл. Сравнение начинается, как только выбраны оба.

  2. Задайте настройки

    Выберите «Определить», «Строки текста» или «Байты», кодировку, правило для пробелов и учёт концов строк. Нажмите «Сравнить», чтобы запустить сравнение с новыми настройками.

  3. Посмотрите изменения

    Сводка показывает число удалённых и добавленных строк и блоков изменений. Кнопки «Предыдущее изменение» и «Следующее изменение» переходят между блоками, а поле «Строк контекста» задаёт, сколько неизменённых строк показывать вокруг них.

  4. Скачайте отчёт

    Скачайте unified diff для текста или CSV с диапазонами байтов для бинарных файлов.

Советы и лучшие практики

  • «Определить» переключается на бинарный режим, если в первых 8 КиБ любого файла есть байт NUL, кроме файлов с BOM UTF-16.
  • Строки сравниваются по хэшу. Совпадение 64-битных хэшей у двух разных строк крайне маловероятно, а таблица всегда показывает настоящий текст.
  • Переставленные блоки текста видны как удаление и добавление, как в diff -u.
  • «Отмена» сразу останавливает обработчик; файлы остаются выбранными.
  • Для быстрого сравнения двух коротких фрагментов подойдёт «Просмотр различий текста» — он подсвечивает изменённые слова внутри строк.

Помогите выбрать следующий шаг

Что улучшить дальше?

Выберите одно предложение. Это идеи, а не обещанные функции.

Выберите один вариант

Отправляется только выбранный вариант как анонимный счётчик. В голосе нет введённых данных, сведений о файлах, URL, cookie или идентификатора; он не сохраняется в браузере. После перезагрузки страницы можно проголосовать снова.