Трассировка лучей по статье (без отражения)
- Чистый python: ~8 секунд\кадр
- Numba: от 12 сек, до 16 - смотря, что оборачивать,
если код оптимизировать - 0.65 сек, первый запуск ~2.8. При этом сами рассчеты занимают ~0.09 сек (в многопоточном режиме неожиданно больше) - Cython: ~ 6 сек (почти неоптимизированная)
Выводы:
Взять написать в питоновском стиле, а потом применить numba/cython - не получится.
Чтобы написать быстрый код, нужно:
- для cython - писать как на
C- тогда не проще писать ли сразу на компилируемых языках? - для numba - нужно избегать всех питоновских объектов, что сказывается на читабельности кода