An overengineered solution to `sort | uniq -c` with 25x throughput (hist)
Проект hist-rs представляет собой высокопроизводительный утилиту для подсчета уникальных строк, написанную на Rust. Его ключевое преимущество — скорость работы, которая в 25 раз превышает производительность классической команды sort | uniq -c в Unix-системах. Это делает его идеальным инструментом для анализа больших лог-файлов и наборов данных, где важна скорость обработки.
Проект реализует эффективный алгоритм подсчета, минимизируя потребление памяти и процессорного времени. Он особенно полезен для разработчиков и системных администраторов, работающих с большими объемами текстовых данных. Код проекта открыт и доступен на GitHub, что позволяет сообществу вносить вклад в его развитие и адаптацию под различные задачи обработки текста.
Комментарии (62)
- Обсуждение началось с вопроса о производительности различных инструментов для подсчёта уникальных строк в файле, где был упомянут
clickhouse-localкак самый быстрый способ. - Участники обсуждали различные инструменты, включая
sort,uniq,awk,uniq -c,sort | uniq -c | sort -n,tsvиcsv, а также их производительность и использование памяти. - Были упомянуты такие инструменты как
tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort,tsort, `tsor
Show HN: ut – Rust based CLI utilities for devs and IT
Написанная на Rust утилита ut предлагает разработчикам набор инструментов для повседневных задач, вдохновляясь функциональностью it-tools.tech. Она включает конвертеры, генераторы хешей, кодировщики и другие инструменты для работы с данными, кодом и системами. Проект стремится объединить распространённые утилиты в одном месте, упрощая доступ без переключения между сервисами.
Использование Rust обеспечивает высокую производительность и безопасность, а модульная архитектура позволяет легко расширять функционал. Это решение особенно полезно для команд, ценящих локальные инструменты без зависимости от облачных сервисов.
Комментарии (39)
- Предложения по распространению: упаковать как Python и NPM модули для удобного запуска через
uvxилиnpx, использоватьcargo-distдля автоматизации. - Критика архитектуры: обсуждается целесообразность единого бинарника (по аналогии с BusyBox) против множества отдельных утилит в духе UNIX-философии "делай одно дело хорошо".
- Вопросы к функционалу: предостережения против включения слишком большого количества функций (например, HTTP), предложения добавить конкретные команды (uuidv7, retry).
- Замечания по реализации: критика требований к вводу (только UTF-8, чтение stdin до EOF), отсутствие тестов для кода, созданного с помощью ИИ.
- Общая оценка: инструмент воспринят как удобный "швейцарский нож" с продуманными умолчаниями, но вызвал дискуссию о разумных пределах его роста.
Zoxide: A Better CD Command 🔥 Горячее 💬 Длинная дискуссия
zoxide — это умная замена команды cd, которая запоминает часто посещаемые каталоги и позволяет быстро переходить по ним с помощью частичного совпадения имён. Она поддерживает все основные оболочки, включая bash, zsh и fish, и использует алгоритм ранжирования для предложения наиболее релевантных путей.
Инструмент работает быстрее аналогов вроде autojump, так как написан на Rust, и интегрируется с fzf для интерактивного выбора. Практический бонус — экономия времени при навигации в сложных проектных структурах.
Комментарии (178)
- Критика zoxide за нечёткость работы и потенциальные ошибки при навигации, а также предпочтение встроенного поиска по истории ZSH или комбинации с fzf.
- Положительные отзывы о значительном ускорении навигации и интеграции zoxide в рабочий процесс, особенно в сочетании с другими инструментами (fzf, bat, starship).
- Обсуждение альтернатив и схожих инструментов (autojump, z, navita, CDPATH в bash/zsh), их сравнение с zoxide.
- Варианты настройки и использования zoxide, включая алиасы для cd, флаг basedir и интерактивный режим zi.
- Замечания о том, что для многих пользователей нативные возможности оболочки или другие инструменты покрывают большинство потребностей.
My new Git utility `what-changed-twice` needs a new name
Разработана утилита для Git, которая показывает изменения между двумя коммитами, исключая изменения, общие для обоих. Она помогает анализировать, какие именно правки были внесены в двух разных версиях, убирая пересекающиеся модификации. Это полезно при сравнении веток или при отслеживании вклада разных разработчиков.
Автор ищет новое название для инструмента, так как текущее what-changed-twice кажется ему слишком длинным и неудобным. Он открыт для предложений, которые лучше отражают суть утилиты — сравнение изменений с исключением общих частей.
Комментарии (37)
- Обсуждаются варианты названия для утилиты, анализирующей файлы, измененные более одного раза в коммитах (например,
what-changed-twice,git-delta,git squash-report). - Предлагаются альтернативные инструменты с похожей функциональностью, такие как
git absorb, который автоматически вносит изменения в предыдущие коммиты. - Упоминается алгоритм "gather" как потенциальная аналогия для процесса группировки изменений.
- Отмечается практическая польза утилиты для изоляции часто изменяемых файлов и упрощения ребейза.
- Подчеркивается, что подобные утилиты можно реализовать как отдельные исполняемые файлы в PATH с префиксом
git-для интеграции с Git.