Выбираем лучший текстовый редактор для поиска логов
Логов становится все больше и больше, а времени на их анализ и поиск всё меньше. Мне стало интересно, а есть ли разница в скорости и производительности популярных программ при работе с большими объемами текста. Оказывается есть! Будем сравнивать Notepad, Notepad++, TextPad и Atom в скорости поиска текста в лог-файлах.
Что будем измерять:
Время запуска.
Потребление памяти при старте.
Скорость открытия редактора и файла (100 Мбайт и 1 Гбайт).
Количество используемой оперативной памяти.
Поиск строки текста.
Поиск регулярного выражения.
Подробнее по железу, версиям софта и методам тестирования
текстовые редакторы:
— Notepad++ v8.4.2 (64-bit)
— TextPad 8.12.0 (2022–05–14) (64-bit)
— Atom 1.60.0×64
— Notepad (Блокнот)
Тест проводился на ноутбуке Dell Latitude 5511 (i7–10850H, 32 Гбайт RAM, Windows 10) Время замерялось секундомером на телефоне. Измерения проводились на лог-файлах SIP-сервера. Для создания файла размером 1 Гбайт оригинальный файл размером 100 Мбайт был скопирован 10 раз. Для поиска использовалась строка »340170317_134134587» и регулярное выражение »340170317\_\d{8}7» либо '340170317\_[[: digit:]]{8}7'.
Желаемый результат поиска — вывод всех совпадений, найденных при запросе (функция «Find All in Current Document» в Notepad++)
Искомое значение встречалось 33 раза файле в 100 Мбайт и 330 раз в файле размером 1 Гбайт.
Время старта и потребление памяти
Начнем тест с сравнения времени старта и потребления памяти пустого окна редактора.
Таблица 1 — Время запуска и потребление памяти
App | Start time | RAM |
Notepad++ | 1 | 10 |
TextPad | 1 | 8 |
Atom | 2 | 367 |
Notepad | 1 | 4 |
Примечение
Start time — время в секундах для открытия редактора
RAM — количество Мбайт оперативной памяти, отображаемое в Диспетчере Задач
Время старта у большинства редакторов — секунда или даже меньше. Только Atom требует заметно больше, хотя и всего две секунды. Что касается потребления памяти, Atom уже на старте заметно вырывается вперед.
Тестируем файл размером 100 Мбайт
Изначально я пытался использовать меню «Открыть с помощью» из проводника, так как чаще всего логи открываю именно так. Однако, для Atom всегда появляется дополнительное инфо-окошко, которое нужно было вручную закрывать. Так что скорость открытия файла для Atom указана приблизительно. Кроме того, ради спортивного интереса, я решил грепнуть (grep) эти файлы в WSL (Ubuntu) в командной строке.
Таблица 2 — поиск по файлу размером 100 Мбайт
App | Start time | RAM | Count | Simple | Regex |
Notepad++ | 1 | 220 | 1 | 1 | 1 |
TextPad | 1 | 43 | 1 | 1 | 1 |
Atom | 4 | 757 | 1 | – | 1 |
Notepad | 38 | 220 | – | – | – |
WSL (Ubuntu) | – | – | – | 1 | 1 |
Примечание
Start time — время в секундах с начала открытия файла до появления текста в редакторе
RAM — аналогично Tаблице 1
Count — выводит только количество совпадений удовлетворяющим условиям поиска
Simple Search— время в секундах для поиска строки »340170317_134134587» во всем файле. В Notepad++ эта функция называется «Find All in Current Document». В результатах поиска должны выводиться детали о найденных совпадениях. В TextPad для этого использовалась функция «Find in Files». В Atom такая функция отсутствует. В Notepad поиск не тестировался
Regex search — Аналогично Simple Search, но поиск идет по регулярному выражения »340170317_\d{8}7»
Окно поиска в TextPadAtom требует подтвердить открытие файлов большого размера
Тестируем файл размером 1 Гбайт
Таблица 3 — поиск по файлу размером 1 Гбайт
App | Start time | RAM | Count | Simple Search | Regex search |
Notepad++ | 2 | 1165 | 4 | 4 | 8 |
TextPad | 12 | 349 | 5 | 13 | 13 |
Atom | 8 | 2619 | 1 | – | 2 |
Notepad | 452 | 2147 | – | – | – |
WSL (Ubuntu) | – | – | – | 5 | 5 |
Примечание
Start time, RAM, Count, Simple Search, Regex search — аналогично Tаблице 2
При большем размере файла удается наблюдать несколько интересных моментов. Из приятного, после 7 с лишним минут (452с) Notepad все же смог открыть файл, хотя на всё это время он, как и положено, ушёл в себя и не отвечал.
Notepad не завис, он медленно работает
Быстрее всего файлы открывает Notepad++, при этом демонстрирую средние показатели по времени поиска.
TexPad, относительно других, работает не торопясь, но и оперативы требует не много.
Atom отличается молниеносным поиском, но требует оперативы в разы больше чем размер файла.
Окно поиска в Atom. Параметр Count (found) отображается практически мгновенно
Поиск по директории
И финальный тест — поиск по директории. В директории 10 файлов по 100 Мбайт. Общий объем 1 Гбайт.
Таблица 4 — поиск по директории
App | RAM | Simple Search | Regex search |
Notepad++ | 220 | 6 | 11 |
TextPad | 14 | 13 | 14 |
Atom | 401 | 6 | 6 |
WSL (Ubuntu) | – | 6 | 6 |
Примечание
RAM, Simple Search, Regex search — аналогично Tаблице 2
В данном сценарии уже не так важен сам редактор, как взаимодействие с жёстким диском.
Результаты поиска по директории в Atom
Место для выводов
Очевидно, что разные приложения по разному работают с текстовыми файлами. На файлах больших размеров или при поиске в директории это становится особенно заметно.
Похоже, стандартный Notepad читает файл одним потоком, поэтому делает это долго, в плане оперативы «дорого» и интерфейс его не отвечает во время открытия файла.
Notepad++ загружает файлы быстро, поиск делает быстро, но и памяти потребляет соизмеримо размеру файла.
TextPad наименее требователен к объему оперативной памяти, но времени на открытие файла (очевидно для его преобразования в меньший объём) тратится в разы больше.
Atom файл открывает не быстро, оперативы потребяет в разы больше размера файла, но время поиска уже в открытом документа — самое лучше.
Что касается общего итога, похоже, лучшего редактора ещё не придумали и каждая из рассмотренных программ решает задачи по своему. С другой стороны, стоит отдельно отметить стандартный Блокнот, который для работы с логам не подходит совсем.
Сравнивая Notepad++ и TextPad, я всё же выбираю Notepad++, однако, делаю это больше по привычке и личным предпочтениям.