Пишешь код на python, а он тормозит и хочется взять и переписать на C++?
Не надо так! Современный С++ компилятор имеет под капотом LLVM, но современный python настолько мощный, что можно использовать тот же самый LLVM, чтобы получить скорость сопоставимую с C++. Вот типичный пример того, что на голом python будет работать мучительно долго:
import time
import numba
import numpy as np
@numba.jit(nopython=True)
def calculate_max_drawdown(initial_cash: float, cashes: np.ndarray) -> float:
"""Расчет максимальной просадки"""
peak = initial_cash
max_dd = 0.0
for cash in cashes:
if cash > peak:
peak = cash
dd = (peak - cash) / peak
if dd > max_dd:
max_dd = dd
return max_dd
# Вариант без Numba для сравнения
def calculate_max_drawdown_pure(initial_cash: float, cashes: np.ndarray) -> float:
peak = initial_cash
max_dd = 0.0
for cash in cashes:
if cash > peak:
peak = cash
dd = (peak - cash) / peak
if dd > max_dd:
max_dd = dd
return max_dd
def test_calculate_max_drawdown():
n = 1_000_000 # 1 миллион точек
returns = np.