Как стать автором
Обновить

Комментарии 14

Если уж ускорять, то с mojo?

Поскорее бы дождаться релиза

Зачем ждать релиза Mojo, когда Cython уже существует?

Почему такое отличие Си от Си++ ?

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

Неправильно написал, поправил)

хорошая статья, не знал что га ниме действительно так просто сделать биндинги на питон. кстати, вопрос про биндинги к биндингам: есть ли возможность сделать ffi к библиотеки на си, а потом подключить это к питону, чтобы не мучаться с типами cython?

Конечно можно.
Возьмем в пример C-функцию printf:

import nimpy

proc printf(formatstr: cstring) {.importc: "printf", varargs,
                                  header: "<stdio.h>".}

proc callPrintF(formatstr: string) {.exportpy: "printf".} =
  printf(cstring(formatstr))

А затем скомпилируем и вызовем printf на стороне Python :)

import mybinds

mybinds.printf("hello, world!")

Автор остановился на половине пути, грустно.

Отлично было бы добавить вишенку на тортик: пишем библиотеку на плюсах, цепляем её в питони и смотрим соотношение nim и чистых плюсов!

Nim использует различные оптимизации при компиляции на таргет языки, поэтому соотношение по скорости там будет весьма маленькое, либо его вообще не будет.

Не увидел, что-бы кто-то сказал хоть слово про мypyc, тогда я скажу.
https://github.com/mypyc/mypyc

Основан на линтере mypy, который жёстко заставляет типизировать ваш код. Как я понимаю, именно благодаря этому, учитывая типы и заставляя согласовывать их везде он добивается своей цели.
На выходе выдаёт *.dll ку, которая потом легко подключается обратно в код через import.
Его использовал не сколько для ускорения (не делал даже бенчмаки), сколько для того, чтобы скрыть код на Питоне, когда надо было на удаленную машину клиенту ставить и проводить предварительную демонтстрацию функционала.

Не знаком с mypy, но выглядит интересно, спасибо за комментарий.

Если нужно добавить скорость вычислений в Python, то Rust вам в помощь.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации