Пожалуйста, прочитайте первую часть этого поста, прежде чем продолжать с этим.
Введение
В Первый пост этой серии Я отображал основные команды, необходимые для плеча Python-Ext-Wasm Отказ Wasmer.io – это проект, направленный на то, чтобы обеспечить упорядоченный раствор для обеспечения компиляции и использования «универсальных дворовочных файлов» через Webassembly; Python-Ext-Wasm Это библиотека, которая обеспечивает привязку Python для скомпилированных двоичных файлов, чтобы в будущем любой разработчик Python может воспользоваться всеми невероятными функциями WebAssembly, сохраняя писать код Python.
Окружающая среда и предположения
Как описано в предыдущем посте, мы работаем с разнообразной настройкой, не выходя из эргономики и простоты использования. Основы компонентов для начала экспериментов являются ржавчины (и груз
) и Python. Я заметил некоторые функции, которые будут нашими целями для упражнений с рабочим процессом, а также предоставляют некоторые основные меры того, насколько полезен подход Wasmer.io и будет. Эти функции написаны в Rust:
Простая функция дополнения:
Реализация серии FIBONACCI, одна из многих, возможно, использовала при попытке осуществлять свои навыки кодирования ( Кредиты здесь ):
Функция, используемая для вычисления Выпуклый корпус над набором декартовых точек, взятых из ржавчины Гео
Я выбрал эти функции, чтобы их можно сравнить их со своими собственными функционально эквивалентными коллегами в Python, что вы можете Найти закодировано здесь :
- Самая базовая функция добавления в Python
- Реализация FIBONACCI, взятая из так, чтобы использовать цикл While (в качестве реализации ржавчины выше, используя для петли)
- Выпуклая реализация корпуса, как предусмотрено
стройно
один из самых популярных Python Geoolibrary (PIP Установите стройно [векторизацию]
). Тот же вход был передан как в своей ржавчине коллега.
Запуск тестов
Если у вас уже есть ваша виртуальная среда Python с установленными требованиями, и вы следуете простым инструкциям в предыдущем посте, вы можете быть в состоянии клонировать репо и попробуйте самостоятельно:
- В корневом каталоге сделайте свой
Cargo Build --Target Wasm32-неизвестный - неизвестный
Чтобы составить свой универсальный двоичный двоичный с помощью функций ржавчины выше; - в
Сроки
каталог запускаетсяpython run_timing_collection.py
Отказ Это серияВремя течения
звонит в то время Оба реализации для каждой функции
Это результат, напечатанный моей машиной, перечисляющим время функции Python и функции WASM, затрагивающие на несколько тысяч итераций:
Modules exported from Rust: ["loop_str", "rust_geo_convex_hull", "fibo", "simple_add"] py add 1.2614150420049555 t_wasm add 8.43558448299882 py fibo 44.35585713999899 t_wasm fibo 1.240821371000493 py shapely convex hull 47.863506109999435 t_wasm rust-geo convex hull 2.2532036840057117
Вы также должны найти некоторые данные в Timing/Data/timing.csv
Отказ от ответственности : Я не предполагаю, что это правильный ориентир, но больше упражнений, поэтому я не ожидаю, что результаты будут точными, но только для того, чтобы дать общий показатель тенденций.
Вывод
Я был бы рад получить больше данных из разных установок. Если вы хотите, вы можете просто бросить комментарий с результатами, напечатанными вашим машиной; Просто скопируйте/вставьте последнюю строку в свой Timing.csv
чтобы помочь с некоторыми данными.
Благодаря всем сопровождающим OpenSource, которые сделали этот короткий эксперимент.
Оригинал: “https://dev.to/tuned/rust-scales-python-some-examples-1-2dj5”