Рубрики
Без рубрики

Ржавчины Python: Некоторые примеры (1)

Продолжение волшебных масштабов Python: основной эксперимент. Теги от ржавчины, Windassembly, Python.

Пожалуйста, прочитайте первую часть этого поста, прежде чем продолжать с этим.

Введение

В Первый пост этой серии Я отображал основные команды, необходимые для плеча Python-Ext-Wasm Отказ Wasmer.io – это проект, направленный на то, чтобы обеспечить упорядоченный раствор для обеспечения компиляции и использования «универсальных дворовочных файлов» через Webassembly; Python-Ext-Wasm Это библиотека, которая обеспечивает привязку Python для скомпилированных двоичных файлов, чтобы в будущем любой разработчик Python может воспользоваться всеми невероятными функциями WebAssembly, сохраняя писать код Python.

Окружающая среда и предположения

Как описано в предыдущем посте, мы работаем с разнообразной настройкой, не выходя из эргономики и простоты использования. Основы компонентов для начала экспериментов являются ржавчины (и груз ) и Python. Я заметил некоторые функции, которые будут нашими целями для упражнений с рабочим процессом, а также предоставляют некоторые основные меры того, насколько полезен подход Wasmer.io и будет. Эти функции написаны в Rust:

  1. Простая функция дополнения:

  2. Реализация серии FIBONACCI, одна из многих, возможно, использовала при попытке осуществлять свои навыки кодирования ( Кредиты здесь ):

  3. Функция, используемая для вычисления Выпуклый корпус над набором декартовых точек, взятых из ржавчины Гео

Я выбрал эти функции, чтобы их можно сравнить их со своими собственными функционально эквивалентными коллегами в Python, что вы можете Найти закодировано здесь :

  1. Самая базовая функция добавления в Python
  2. Реализация FIBONACCI, взятая из так, чтобы использовать цикл While (в качестве реализации ржавчины выше, используя для петли)
  3. Выпуклая реализация корпуса, как предусмотрено стройно один из самых популярных 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”