Движок формул Univer на Rust обеспечивает серверные вычисления электронных таблиц в Univer Office SDK для пакетной обработки, отчётов и автоматизации с агентами. Когда бюджеты, прогнозы и бизнес-правила содержат сотни тысяч или миллионы формул, вычислительная мощность становится важной основой приложения.
Мы измерили десять книг с повторяющимися формулами, условной статистикой, межлистовыми бюджетами и прогнозами. Три результата показывают масштаб работы, с которым справляется движок:
- Почти 2 миллиона узлов формул: 12.29 секунды, включая нативную загрузку и полный расчёт.
- Бюджет проекта на 54 листах: 1.27 секунды.
- Продажи с COUNTIFS: 3.54 секунды.
Результаты на десяти книгах
Rust включает загрузку нативного снимка и полный расчёт, без преобразования XLSX. Excel и LibreOffice включают открытие исходного XLSX и полный пересчёт.
Секунды; меньше — быстрее. Горизонтальная шкала логарифмическая.
Все результаты и скачивание книг
Нажмите название, чтобы скачать исходный XLSX и изучить бизнес-модель.
| Книга | Движок формул Univer на Rust Нативная загрузка + расчёт (с) | Excel Открытие + пересчёт (с) | LibreOffice Открытие + пересчёт (с) |
|---|---|---|---|
| Полмиллиона формул | 3.54 | 2.39 | 18.74 |
| Смешанная нагрузка формул | 5.08 | 3.11 | 9.72 |
| Прогноз · большая модель | 17.67 | 8.55 | 12.86 |
| Большой бизнес-анализ | 12.29 | 10.80 | 8.99 |
| Продажи COUNTIFS | 3.54 | 19.47 | 320.01 |
| Межлистовой бюджет проекта | 1.27 | 0.73 | 2.96 |
| Формулы агрегации | 0.27 | 1.03 | 3.10 |
| Вложенные IF и рабочие дни | 1.65 | 3.48 | 2.21 |
| Расчётная модель CBAM | 1.19 | 0.74 | 1.83 |
| Прогноз · малая модель | 13.02 | 5.79 | 7.61 |
У каждой модели свои особенности
В этих нагрузках движок формул Univer на Rust показывает хорошие результаты на условном подсчёте, агрегациях и рабочих днях. Время определяется не только числом формул: важны диапазоны, функции и зависимости.
Excel и LibreOffice быстрее завершают прогнозные модели, задавая направление дальнейшей оптимизации. Все результаты открыты, чтобы разработчики могли оценить собственные нагрузки.
Добавьте вычисления в своё Office-приложение
Движок формул Univer на Rust участвует в серверных вычислениях Office SDK. Приложение может рассчитать конкретную ревизию и сохранить результаты в её Snapshot. Браузер повторно использует актуальные значения и продолжает отвечать на правки своим движком формул.
Общая среда содержимого позволяет строить фоновые отчёты, пакетную обработку и задачи агентов, передавая результаты в следующий этап бизнес-процесса.
Изучите безголовое выполнение и серверные вычисления или создайте приложение по быстрому старту Office SDK.
Методика и сведения о книгах
Rust загружает заранее преобразованный нативный JSON; Excel и LibreOffice открывают XLSX, включая обработку документа и стилей. Измеряются эти входные форматы. Запуск, предварительное преобразование и последующая проверка исключены; базовое время открытия не вычитается.
Rust использует один прогрев и пять измерений на книгу, каждый раз в отдельном процессе с новым документом. Значения Rust — медианы.
Среда контрольных записей Excel и LibreOffice: Windows 11, Intel Core i7-13700H, около 32 ГБ ОЗУ. Excel 16.0 build 20527.0, 20 потоков расчёта; LibreOffice 26.8.1.1, многопоточные вычисления на CPU включены, ускорение OpenCL не используется. Новый замер Rust использует 20 потоков.
| Движок | Измеряемая операция | Публикуемая статистика |
|---|---|---|
| Движок формул Univer на Rust | Непрерывный таймер: чтение нативного файла → десериализация JSON → load_snapshot → начальные зависимости → полный принудительный расчёт → применение. Предварительное преобразование XLSX исключено. | 1 прогрев и 5 измерений на книгу; медиана. Каждый запуск — отдельный процесс и новый документ; 20 потоков. |
| Excel COM | От нового Workbooks.Open до возврата CalculateFullRebuild(), с явным перестроением зависимостей и полным пересчётом. | 1 прогрев и 5 измерений на книгу; медиана. |
| LibreOffice без интерфейса / UNO | От открытия исходного XLSX до возврата calculateAll(), включая работу при открытии. | медиана 5 измерений; продажи COUNTIFS — один успешный диагностический запуск. |
Этапы загрузки и расчёта Rust
Медиана каждого столбца рассчитана отдельно, поэтому их сумма может отличаться от медианы непрерывного общего времени.
| Книга | Чтение, десериализация и загрузка (с) | Зависимости, полный расчёт и применение (с) | Непрерывное общее время (с) |
|---|---|---|---|
| Полмиллиона формул | 1.27 | 2.25 | 3.54 |
| Смешанная нагрузка формул | 0.60 | 4.50 | 5.08 |
| Прогноз · большая модель | 3.65 | 13.94 | 17.67 |
| Большой бизнес-анализ | 2.65 | 9.46 | 12.29 |
| Продажи COUNTIFS | 0.61 | 2.97 | 3.54 |
| Межлистовой бюджет проекта | 0.39 | 0.88 | 1.27 |
| Формулы агрегации | 0.09 | 0.18 | 0.27 |
| Вложенные IF и рабочие дни | 0.27 | 1.40 | 1.65 |
| Расчётная модель CBAM | 0.09 | 1.08 | 1.19 |
| Прогноз · малая модель | 2.40 | 10.20 | 13.02 |
Содержимое каждой книги
Количество формул — это исполняемые узлы, не обязательно физические ячейки с формулами. Ячейки данных содержат значения без формул, включая заголовки. Набор состоит из девяти основных книг и одного масштабного варианта, а не десяти независимых семейств формул.
| Книга | Узлы формул | Ячейки данных / листы | Особенности формул |
|---|---|---|---|
| Полмиллиона формул | 500,001 | 1,000,047 / 2 | SUM, AVERAGE, IF, XLOOKUP; множество повторяющихся формул. |
| Смешанная нагрузка формул | 367,954 | 432,055 / 7 | SUMIF, AVERAGEIFS; условная статистика, даты и текст. |
| Прогноз · большая модель | 1,463,721 | 1,549,982 / 4 | 6 уровней вложенности; INDEX, LARGE, OFFSET, MATCH и массивы. |
| Большой бизнес-анализ | 1,992,537 | 113,084 / 31 | 7 уровней; межлистовые ссылки, обработка текста и формулы совместимости. |
| Продажи COUNTIFS | 349,630 | 299,573 / 2 | IF, AND, COUNTIFS; диапазоны подсчёта, растущие с каждой строкой. |
| Межлистовой бюджет проекта | 68,576 | 101,378 / 54 | 54 листа; межлистовые бюджеты с VLOOKUP и INDIRECT. |
| Формулы агрегации | 26,951 | 6,841 / 2 | IFERROR, AVERAGE, SUM; агрегации с длинными списками аргументов. |
| Вложенные IF и рабочие дни | 118,821 | 338 / 1 | 10 уровней IF; рабочие дни через NETWORKDAYS. |
| Расчётная модель CBAM | 52,739 | 13,738 / 19 | 6 уровней; поиск, условная статистика, динамические ссылки и матрицы. |
| Прогноз · малая модель | 974,625 | 1,040,507 / 4 | Та же семья формул, что у большой прогнозной модели, в меньшем масштабе. |
Данные, проверка и воспроизведение
Отчёт проверяет число формул и выборку значений для контроля полноты расчёта тестируемого пути. Это не устанавливает равенства всех результатов между продуктами.
API пересчёта: Excel CalculateFullRebuild и LibreOffice calculateAll.