Войти Бесплатная оценка
Оптимизация Rust с гарантией в договоре

Ваш Rust быстрее на измеренные такты, а не на обещания

Присылаете crate и бенчмарк. Мы меряем его на эталонном железе и до оплаты показываем три цифры: сколько даст бесплатная настройка сборки, автоматическая оптимизация и работа инженера. Платите за выбранный результат и получаете подписанную сборку.

4,0×распаковка bzip2 против библиотеки на C
1,36×rav1e, кодирование AV1 на клипах Xiph
0 битрасхождений с исходным кодом
Отчёт об оценке пример
crate: matcher-core · bench: match_batchAMD Zen 3 · Threadripper PRO
База, такты на вызов (M1, медиана) 1 284 310 ± 0,3%
Базовыйфлаги сборки, PGO · бесплатно 1 130 190−12% · измерено
Уровень 1автоматическая оптимизация 757 740−41% · измерено
Уровень 2инженер, от пары часов до пары дней 372 450–539 410−58…−71% · прогноз, минимум −58%
Числа иллюстративные. В настоящем отчёте уровень 0 и 1 уже измерены на стенде, уровень 2 дан диапазоном с гарантированным минимумом.
Что уже измерено

Стандартные тесты, выход совпадает с оригиналом до бита

Публичный код и общепринятые наборы данных: корпус сжатия Silesia, видеоклипы Xiph, наборы ETT для прогноза временных рядов, индикаторы технического анализа. Каждый замер — реальное последовательное исполнение всего набора против неизменённого оригинала, все выходы сравниваются побайтно. Доказательства корректности для кодеков прошли независимую проверку.

Все три уровня · бинарники открыты

Индикаторы ADX, ATR и PSAR из Python ta

Порт библиотеки ta 0.11 на Rust, совпадающий с Python бит в бит. Свип параметров на одном миллионе баров: ATR, ADX и ±DI для пяти окон и Parabolic SAR в четырёх конфигурациях. Каждый уровень собран, замерен на стенде и выложен; вывод всех уровней совпадает до байта, в том числе на входах, где программа падает.

9,6×уровень 2 к исходному Rust
18×к Numba на вычислениях
< 48 чработа инженера над уровнем 2

Тот же алгоритм на Numba (тоже бит в бит): 335 мс вычислений и 201 мс pandas.read_csv. Уровень 2: 18 мс вычислений и 20 мс разбора CSV, вся программа — 81 мс. Python ta: 20,5 с на 100 тыс. баров.

База, такты на запуск (M1, медиана) 1 375,9 млн 483 мс
БазовыйLTO, codegen-units, target-cpu · бесплатно 1 247,5 млн−9% · 1,10×
Уровень 1автоматическая доказанная оптимизация 1 128,7 млн−18% · 1,22×
Уровень 2инженер: смена вычислительной схемы 143,1 млн−90% · 9,61×
Измерено на стенде: Zen 3, такты vPMU, 9 чередующихся раундов. Замерены ровно те файлы, что выложены.
Скачать · MIT · Linux x86-64 весь пакет1 МБ: программы всех уровней, исходник базы, генератор данных, замеры база базовый уровень уровень 1 уровень 2 как проверить SHA256SUMS
3,4×к исходному Rust
4,0×к libbz2 на C

Распаковка bzip2

Крейт bzip2-rs на чистом Rust, все 12 файлов корпуса Silesia, 212 МБ. Каждый файл быстрее, от 2,8 до 4,2 раза. На 400 000 повреждённых потоков совпадают и данные, и тексты ошибок.

1,29–1,36×

rav1e 0.8 — кодирование AV1

Пять клипов Xiph, выбранных случайно до замера: Elephants Dream, Park Joy, Johnny, Bus, Stefan. Полный цикл кодирования в режимах speed 6 и 10. Каждый клип быстрее, потоки совпадают побайтно.

5,6–5,9×

Прогноз временных рядов на Rust

DLinear с весами официального обучения на четырёх наборах ETT, все окна тестовой части, против исходной Rust-реализации. На всех ядрах в 2,3–3,6 раза быстрее PyTorch с компилятором Inductor. PatchTST: 2,2–2,5×.

Стенд: AMD Threadripper PRO 5975WX (Zen 3, AVX2). Отношение медиан реального исполнения всего набора: семь раундов для кодеков, пять повторов для моделей. В одном потоке PyTorch на этих моделях пока быстрее: он меняет порядок сложений, а мы сохраняем побитовое совпадение с исходным кодом. Это результаты на конкретном коде, а не обещание для вашего: для вашего crate мы называем цифры после замера.

Как это работает

От первого замера до подписанной сборки

Измерьте у себя

Бесплатный харнесс снимает такты, инструкции и профиль. Пакет показаний можно отправить нам без исходников, и мы дадим предварительный диапазон.

Пришлите горячую часть

Для настоящего замера, а не оценки, нужен исходный код. Поможем выделить только вычислительное ядро без бизнес-логики и снимем на нём базу на эталонном стенде.

Зафиксируем паспорт

Платформа, нагрузка, версии инструментов и протокол записываются до начала работы. От этих чисел считается результат.

Увидите три цифры

Базовый уровень и уровень 1 измерены на стенде заранее. Уровень 2 — диапазон, срок и гарантированный минимум.

Получите сборку

После оплаты — подписанная библиотека, заголовок, SBOM, отчёт о замерах и проверке эквивалентности.

Цены

Платите за ускорение, которое уже видели

Цена уровня 1 зависит от размера горячего кода и достигнутого ускорения. Вы видите результат до оплаты, поэтому платите только за то, что получили.

Базовый
$0
  • Профили сборки: LTO, codegen-units, target-cpu, PGO
  • Рецепт флагов, который вы применяете сами
  • Горячий код до 2 тыс. строк
  • Готово за минуты

Цифра измерена на стенде, это не прогноз.

Уровень 2 · инженер
по оценке 30% вперёд
  • Главное — смена вычислительной парадигмы, дальше раскладка данных, SIMD и всё остальное
  • От пары часов до пары дней
  • Остаток — после приёмки по метрикам

Не достигли гарантированного минимума — возвращаем деньги по таблице из договора.

Ускорение сверх базового уровнядо 1 тыс. строк1–3 тыс. строк3–10 тыс. строкболее 10 тыс. строк
10–25%$290$490$890по запросу
25–100%$790$1 190$2 390по запросу
100–200%$1 190$1 790$3 590по запросу
более 200%$1 990$2 990$5 990по запросу

Ускорение — во сколько раз новая сборка быстрее базового уровня, минус единица: 100% — вдвое быстрее, 200% — втрое; в тактах это −20% при 25%, −50% при 100% и −67% при 200%. Бесплатный базовый уровень — для горячего кода до 2 тыс. строк; для большего объёма он входит в уровень 1. Дополнительная платформа: +30%. Строки считаются по llvm-cov: только код, который выполняется в бенчмарке паспорта (подробнее — в вопросе «Как считаются строки?»).

Подписка на CI: ускорение не теряется с новыми релизами

ПланВ месяц при оплате за годЧто входит
Crate$149Горячий код до 2 тыс. строк, до 4 релизов в месяц, одна платформа
Команда$399До 10 тыс. строк, до 20 релизов в месяц, две платформы
Enterpriseот $1 500Несколько crate, SLA, приёмка на вашем железе

Подписка оформляется на год с оплатой вперёд: $1 788, $4 788 или от $18 000. При каждом новом релизе сборка снова ускоряется и проверяется на эквивалентность. Если релиз не удалось ускорить до уровня договора, к сроку окончания подписки добавляется доля месяца, равная доле таких релизов: из четырёх релизов месяца не удался один — добавляем четверть месяца.

Гарантия

Мы обещаем конкретные числа на конкретном железе

До начала работы фиксируем паспорт измерений: модель CPU и частоту, нагрузку с хэшами входных данных, версии rustc и инструментов, протокол замера. Договор говорит только об этих метриках.

M1Такты на реальном CPUСчётчик PMU на эталонном стенде при фиксированной частоте, база и новая версия чередуются. Это обещание.
M2Детерминированные такты и инструкцииСимуляция фиксированной версии. Одинаковая цифра у нас и у вас, для сверки и CI.
M3Время p50 / p99Для задач, где важна задержка, обещание можно дать по p99.
M4Пиковая памятьОграничение: не хуже базы больше оговорённого процента.
M5КорректностьДифференциальные тесты и фаззинг, в том числе на скрытых входах, которых оптимизатор не видел.
Формулировка в договоре

«На платформе P по протоколу паспорта измерений медиана M1 снизится не менее чем на X% относительно базы при выполнении условий M4 и M5».

Почему такты реального CPU. Симулятор даёт повторяемое число, но не всегда верное: он не видит снижения частоты при широком SIMD, префетчера и многопоточности. Поэтому в договоре — реальное железо, а симуляция служит для сверки.

Скрытые входы. Часть ваших данных откладывается до приёмки, чтобы ускорение не было подгонкой под бенчмарк. Вы присылаете нам эти данные в зашифрованном виде, а ключ даёте после того, как готов бинарь.

Харнесс

Тот же инструмент измерения, что и у нас

Бесплатный open-source CLI снимает те же метрики, что и наш стенд. Посмотрите, куда уходит время, отправьте нам показания без кода и примите работу сами.

quick

Такты, инструкции, промахи кэша и ветвлений. Медиана, разброс, доверительный интервал.

profile

Горячие функции и тип узкого места: вычисления, память или ветвления.

deterministic

Повторяемые такты под симулятором. Работает в VM и CI, без доступа к счётчикам.

accept

Сравнение до и после по метрикам договора и проверка, что результаты совпадают.

$ cargo takt measure --mode quick --bench match_batch
platform   AMD Threadripper PRO 5975WX · Zen 3 · core 8 pinned
checks     turbo off · SMT off · governor=ondemand → set performance
runs       200 × A/B interleaved

cycles:u   1 284 310  ±0.31%  (95% CI)
instr:u    2 911 044  IPC 2.27
L1d miss   3.8%       br miss 1.2%

quality    good · 1 warning
bundle     ./takt-bundle.json  # можно отправить без исходников

Пример вывода иллюстративный. Пакет показаний содержит окружение, хэши сборки и входных данных, метрики с распределением и оценку качества замера. Имена функций в профиле можно захэшировать.

Безопасность

Ваш код исполняется только в изолированном контуре без сети

Изоляция

Каждая сборка — одноразовая microVM без доступа в сеть. Бенчмарк-узел в каждый момент занят одним клиентом.

Шифрование и удаление

Отдельный ключ на проект. Через 30 дней или по кнопке ключ уничтожается вместе с данными.

Код остаётся вашим

Код и данные не передаются третьим лицам, не используются в работе для других клиентов и удаляются по сроку. Общие математические методы, найденные нами при работе по ускорению вашего алгоритма, пополняют нашу библиотеку без вашего кода, данных и названий. Это пункты договора и NDA до загрузки.

Подписанная сборка

Подпись, SBOM и provenance: из каких исходников, каким компилятором и на каком стенде собран артефакт.

Проверяемая чистота

Библиотека без системных вызовов и сети. Это видно по таблице импортов, проверять можно своими средствами.

Только горячий модуль

Можно прислать только вычислительное ядро без бизнес-логики. В документации есть инструкция, как его выделить.

Мы поставляем сборку, а не исходный код: метод оптимизации остаётся нашим, а результат вы проверяете по метрикам и тестам эквивалентности. Для непрерывности бизнеса доступно эскроу у независимого агента.

Для кого

Где ускорение больше всего

Сейчас мы работаем на x86-64 (AMD Zen 3, AVX2). Больше всего выигрывает код, который подолгу ждёт память, разбирает данные по битам, перебирает варианты по одной истории или пересчитывает одно и то же на скользящем окне.

Бэктест и симуляция стратегий

Торговые движки, replay рыночных данных, перебор и эволюция параметров. Закрытый кейс клиента: 2,5–10,5× автоматически, до 33,7× с инженером. Открытый кейс: индикаторы ta, 9,6×.

Архивы и конвейеры данных

Распаковка архивов, дампы Википедии и OpenStreetMap, научные и геномные данные, хранилища логов. bzip2: 3,4× к исходному Rust и 4,0× к C.

Видео и AV1

Видеоплатформы и облачное транскодирование на rav1e. 1,29–1,36× на полном кодировании: на кластере это около четверти серверов.

ML-инференс на CPU

Модели временных рядов в Rust без Python: прогноз нагрузки, спроса, энергопотребления. 5,6–5,9× к исходному Rust, на всех ядрах быстрее PyTorch.

Класс кодаОжидаемое ускорениеГде измерено
Симуляции с состоянием, перебор кандидатов по одной истории2,5–34×торговый движок
Индикаторы теханализа, свипы параметров1,2–9,6×ta: ADX, ATR, PSAR
Декодеры с обходом таблиц и побитовым разбором2,5–4×bzip2, Silesia
Инференс небольших моделей на всех ядрах2,2–5,9×DLinear, PatchTST, ETT
Кодировщики с перебором режимов1,3–1,4×rav1e, Xiph
Криптопримитивы, кодеки на ручном SIMD, форматы с сильной библиотекой на CнетSHA-256, ChaCha20, x264, LZ4
Сравнение

Чем это отличается от привычных вариантов

ИИ-агент самостоятельноСервисы CI-бенчмаркингаКонсультантTAKT
Ускоряет кодданет, ловит регрессиидада
Результат известен до оплатынет—нетда, уровни 0–1
Гарантия в договоренетнетобычно нетда, по M1
Защита от подгонки под бенчмаркна вас—зависит от человекаскрытые входы
Доказательство корректности каждого изменениянет, только ваши тесты—редкода, с независимой проверкой
Собственные методы оптимизацииобщие знания модели—опыт одного человекабиблиотека доказанных методов, растёт с каждым проектом
Честный отказ, если ускорять нечегоагент всегда что-то меняет—не всегдада, до оплаты
Эталонное железовашедавашеда
Модель оплатытокеныза пользователяза часза результат
Вопросы

Что обычно спрашивают

Почему вы отдаёте сборку, а не исходники?

Метод оптимизации — наше ноу-хау, поэтому мы поставляем статическую или динамическую библиотеку с C-заголовком и тонкой Rust-обёрткой. Подключение — одна строка в Cargo.toml. Корректность подтверждается тестами эквивалентности, происхождение — подписью и provenance.

Что, если обещанное ускорение не получится?

На уровне 1 вы платите за уже измеренный результат, поэтому такого не бывает. На уровне 2 мы называем гарантированный минимум; если он не достигнут, возвращаем деньги по таблице из договора.

Как считаются строки?

Собираем ваш код с флагом -C instrument-coverage в том же профиле и для той же платформы, что в паспорте, и прогоняем бенчмарк паспорта на открытых входах. Считаются строки Rust, которые выполнились хотя бы раз по данным llvm-cov. Не считаются пустые строки и комментарии, невыполненный код, тесты и обвязка бенчмарка, сторонние зависимости вне объёма работы и ассемблер; обобщённая функция считается один раз. Ваш харнесс выдаёт то же число, оно записывается в паспорт до оплаты. Данные в подсчёт не входят, только ваш код. Для ориентира: при распаковке корпуса Silesia в bzip2-rs выполняется 598 строк его кода, при кодировании пяти клипов Xiph в rav1e — 12 809 строк из 55 419.

Какие платформы поддерживаются?

Сейчас x86-64 с AVX2, эталонный стенд на AMD Zen 3. Intel Xeon, AMD Zen 4/5 и ARM (AWS Graviton) — следующие. Если вашей платформы нет на стенде, результат подтверждается приёмкой на вашем железе через харнесс.

Какой код ускоряется плохо?

Декодеры форматов, для которых уже есть давно оптимизированные библиотеки на C (LZ4, zstd, deflate): против них мы пока не получили выигрыша. Зрелые кодеки на ручном SIMD и ассемблере (x264, x265), криптографические примитивы вроде SHA-256 и ChaCha20, обработка случайных несжимаемых данных и очень короткие вызовы, где всё время уходит на накладные расходы. В таких случаях бесплатная оценка честно покажет небольшой выигрыш, и платить не придётся.

Мои такты отличаются от ваших. Почему?

Такты зависят от модели CPU, частоты, turbo, памяти и входных данных. Договорные цифры снимаются на стенде по паспорту измерений. Режим deterministic харнесса даёт одинаковое число у нас и у вас.

Что с плавающей точкой?

По умолчанию результат совпадает побитово. Если вы допускаете отклонение, его величина фиксируется в паспорте и проверяется тестами.

Сборка упадёт на старом сервере?

Нет. В библиотеке есть выбор кода по возможностям CPU во время исполнения и безопасный запасной путь для процессоров без нужных расширений.

Начать

Получите три цифры для своего crate

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

Код на этом шаге не нужен. Отправляя заявку, вы соглашаетесь на обработку контактных данных.