CountTriples(ReadOnlySpan<int> arr, int sum)
{
int n = arr.Length;
int count = 0;
for (int i = 0; i < n; ++i)
{
for (int j = i + 1; j < n; ++j)
{
var x = arr[i] + arr[j];
for (int k = j + 1; k < n; ++k)
{
var sum2 = x + arr[k];
count += sum2 == sum ? 1 : 0;
}
}
}
return count;
}
Он примерно в полтора раза лучше того, что было.
Не уверен, что n=Length распознаётся верно
Я пробовал инлайнить, не роляет.
Где fixed и указатели?
Попробуй слайсы и for each?
Конечно же, я уже набодяжил. Но это не помогло.
Пробовал, тот же хуй
Оно этот метод один раз вызывает на процесс? Может джит его не успевает в нужный тир перевести. На лету ж не заменяет в методе ничего вроде.
Сто раз вызывает
А что плюсы?
Ну давай жахнем
Плюсы скомпилились за полсекунды, и ебут всех
Погляди там ассемблер
https://godbolt.org/z/dEesYGEnh гляжу
Похоже, что плюсы как-то нарезали на вектора шоле
Ну и кароч потом сразу по 4 или там по 8 вместе складывают и сравнивают
какая то хуета со спанами, они медленнее на 25% чем массивы на дотнет 8
Ничо не знаю, у меня спаны работают лучше.
я просто меняю массив на спан и замедление с 2100 до 2500
Обсуждают сегодня