GitHub
Benchmark: производительность Swift с поддержкой CI
Benchmark подходит как для небольших специальных бенчмарков, ориентированных на рантайм, так и для более масштабных бенчмарков, которые заботятся о нескольких расширенных метриках.
Производительность — ключевая характеристика для многих приложений и фреймворков. Пакет Benchmark позволяет легко измерять и отслеживать множество различных показателей, влияющих на производительность, таких как загрузка процессора, ARC-трафик, использование памяти, использование ресурсов операционной системы, таких как потоки и системные вызовы, а также полностью пользовательские счетчики метрик.
Benchmark работает как на macOS, так и на Linux и поддерживает несколько ключевых рабочих процессов для измерения производительности:
- Автоматизированная проверка регрессии производительности пул-реквеста путем сравнения показателей производительности запроса с основной веткой и проверки PR-процесса в случае регрессии в соответствии с абсолютными или относительными пороговыми значениями, указанными для каждого контрольного параметра
- Автоматизированная проверка пул-реквеста по сравнению с предварительно записанным абсолютным пороговым значением, подходящая, например, для регрессионных тестов
- Ручное сравнение нескольких базовых показателей производительности для итеративной или A/B работы отдельного разработчика
- Экспорт результатов бенчмарка в нескольких форматах для анализа или визуализации
- Запуск профилировщика Instruments на наборе бенчмарков непосредственно из Xcode
Benchmark обеспечивает быстрый способ измерения и проверки метрик производительности, в то время как другие более специализированные инструменты, такие как Instruments, DTrace, Heaptrack, Leaks, Sample и другие, могут быть использованы для выявления проблем производительности или для поиска первопричин любых обнаруженных отклонений.
Benchmark подходит как для небольших специальных бенчмарков, ориентированных на рантайм, так и для более масштабных бенчмарков, которые заботятся о нескольких расширенных метриках, таких как выделение памяти, системные вызовы, использование потоков, контекстные переключения, трафик ARC и другие.