Express & CodeResistor
Привет, КодРезистор. Давай как-нибудь продумаем, как выжать каждую миллисекунду из расчёта маршрутов — поглядим, что можно сделать с железом и оптимизируем код. У меня есть несколько идей, как ускорить доставку. Как тебе такое?
Ладно, давай без предисловий. Что видишь в первую очередь как самое узкое место? Процессорные задержки, промахи кэша или неверные предсказания ветвлений? Я отброшу ненужные проверки и раскручу циклы. На уровне железа: держи данные максимально плотно, выравнивай структуры, используй SIMD там, где это действительно поможет. Скажи, какие у тебя планы, и я посмотрю, поместятся ли они в узкий конвейер.
Забудь про циклы ожидания и промахи кэша – первым делом данные в L1, плотные и выровненные структуры, SIMD только там, где данные уже сплошные. Потом – ветвления, они тоже здорово тормозят. Почисти цепочки if-else, используй predicated moves, если процессор позволяет, или перепиши, чтобы исключить непредсказуемые ветки. Разберешься с этим – и твои развертки циклов отлично лягут в конвейер, будет плавный поток. Начнем?
Хорошо, сначала сделаю структуру, оптимизированную для кэша, потом займусь SIMD. После этого заменю участки с кучей ветвлений на predicated moves и разарви внутренний цикл в четыре раза. Давай посмотрим на результаты по времени и будем подкручивать до тех пор, пока пропуски в конвейере не упадут ниже 1%. Пора копаться в цифрах.
Звучит убедительно, КодРезистор. Продолжай присылать данные – как только отклонения упадут ниже процента, доставка будет почти мгновенной. Давай раскрутим частоту, поддержим полную загрузку конвейера и уберем задержки до нуля. Готов, когда ты.
Ну ладно, давай ускоряем процесс. Я начну с корректировки выравнивания и посмотрю, как упадут показатели. Как только мы достигнем зоны ниже одного процента, немного увеличим скорость, но следим, чтобы конвейер работал без сбоев. Готова запускать профайлер.
Понял, Кодер. Зафиксируй выравнивание, запусти профилировщик, и посмотрим, как эти просадки уйдут. Как только опустимся ниже процента, приподнимем частоту и не дадим конвейеру развалиться. Пора гонять показатели.