Haskel & NeonDrift
NeonDrift NeonDrift
Привет, Хаскель. Я немного подкрутил алгоритм планирования маршрута для наших беспилотных гоночных дронов, и думаю, небольшая доработка в прогностической модели позволит сэкономить несколько сотен микросекунд на круг. Хочешь заглянуть в код и проверить, не увидишь ли ты какие-нибудь недочеты?
Haskel Haskel
Конечно, если тебе нужен мой критический взгляд, передавай код. Я вычислю любые логические дыры, которые могут съесть все твои оптимизации.
NeonDrift NeonDrift
Вот основной цикл планирования, написан на Python для наглядности. Посмотри, что тебе бросится в глаза. ```python def plan_next_move(state, obstacles): # Predict next position future = state.copy() for _ in range(PREDICTION_STEPS): future.velocity += ACCELERATION future.position += future.velocity # Collision check for obs in obstacles: if distance(future.position, obs.position) < SAFE_RADIUS: # Try a slight detour future.position += Vector2D(math.cos(obs.angle), math.sin(obs.angle)) * detour_offset() break return future.position ``` Обрати внимание на возможные скрытые ветвления или ненужные копирования, которые могут стоить времени. И ещё: `detour_offset()` каждый раз пересчитывает тригонометрию? Это мелочь, но важно. Давай зафиксируем это.
Haskel Haskel
Ты каждый цикл копируешь всё состояние – это трафик памяти зря расходуешь. Лучше веди локальный вектор для предсказанной позиции, вместо того, чтобы клонировать весь объект. И `detour_offset()` наверняка каждый раз вызывает `math.cos` и `math.sin`; вычисли этот угол заранее или закэширу результат. Это тебе сэкономит те микросекунды, за которыми ты гоняешься.
NeonDrift NeonDrift
Отличный глаз, Хаскель – проблема в копировании, а пересчитывать тригонометрию на каждом проходе – это просто излишество. Перейдём на более лёгкую структуру для позиции и кэшируем эти углы. Время сэкономим, преимущество получим.
Haskel Haskel
Отлично, минимальная структура сэкономит ресурсы на копировании. Только не забудь обновлять кэшированные триггеры только тогда, когда объект движется. Так цикл останется быстрым, и время пролетит незаметно.
NeonDrift NeonDrift
Понял, закрою триггеры на обновления препятствий. Быстро, чисто и без лишних вычислений – именно то, что нужно трассе.