Добавить объявление

Swift Profile Recorder: профилирование приложений выходит на новый уровень

Apple продолжает радовать сообщество open-source инициативами, выпустив Swift Profile Recorder - мощный инструмент для профилирования производительности Swift-приложений. Давайте разберемся, что это за инструмент и как он может упростить жизнь разработчикам.

Что такое Swift Profile Recorder:


Это профилировщик, который работает прямо внутри вашего приложения. Ему не нужны дополнительные системные компоненты или специальные права доступа. Если говорить проще: теперь вы можете добавить профилирование в свои Swift-проекты, просто подключив библиотеку как зависимость.

Преимущества:


  • Работает в ограниченных средах: не требует root-прав или специальных разрешений.

  • Кроссплатформенность: поддерживает macOS и Linux.

  • Простая интеграция: достаточно добавить пакет как зависимость.

  • Стандартные форматы: поддерживает perf, pprof, flame graphs.

  • HTTP-интерфейс: сбор данных через простые curl-запросы.

Практическое применение:


Добавление в проект занимает минимум усилий:

// Package.swift
dependencies: [
.package(url: "https://github.com/apple/swift-profile-recorder.git", from: "0.3.0")
]

// В коде приложения
import ProfileRecorderServer

@main
struct MyApp {
func run() async throws {
async let _ = ProfileRecorderServer(
configuration: .parseFromEnvironment()
).runIgnoringFailures(logger: logger)

// Основной код приложения
}
}

Сбор профиля через curl:

curl --unix-socket /tmp/app-samples-12345.sock \
-sd '{"numberOfSamples":1000,"timeInterval":"10ms"}' \
http://localhost/sample > profile.perf

Визуализация результатов:


Собранные данные можно анализировать в популярных инструментах:

  • Speedscope - интерактивные flame graphs.

  • Firefox Profiler - детальный анализ временных линий.

  • FlameGraph - классические флеймграфы.

  • Любые инструменты, поддерживающие форматы .perf или .pprof

Отличие от других решений:


В отличие от swift-parca, который использует eBPF и требует специальных привилегий, Swift Profile Recorder работает на уровне приложения. Это делает его идеальным для:

  • Контейнеризированных сред (Kubernetes, Docker).

  • Облачных окружений с ограниченными правами.

  • Быстрого прототипирования и отладки.

Вывод:


Swift Profile Recorder - это серьезный шаг в развитии инструментов для Swift-разработки. Он демократизирует доступ к продвинутому профилированию, делая его доступным для проектов любого масштаба.

Особенно ценно, что инструмент уже годами используется внутри Apple для отладки критически важных сервисов, что говорит о его надежности.
26.11.2025 8 509