172 похожих чатов

Это он типо реально там как-то его оптимизирует что он

это считает за наносекунды?

17 ответов

25 просмотров

да: https://godbolt.org/z/PsWdnchzx

https://godbolt.org/z/9drvjf3d6 сверху - оптимизации выключены (как при debug билде) снизу - максимальные оптимизации 3-го уровня может так понятнее станет

насколько я помню это называется констант фолдинг https://llvm.org/doxygen/ConstantFolding_8cpp_source.html компилятор видит что набор инструкций выполняется над константами (да ещё и без всяких промежуточных ио и тд) то есть pure function следовательно это всё можно свернуть в одно константное значение что вы и наблюдаете когда весь вызов схлопыается в 1 асм операцию по установки регистра в нужное значение

вспоминаю мем компилятора фортрана который такие циклы оптимизировал в формулы суммы ряда

Traveller Kolsky
Ллвм тоже оптимизирует бтв

ну про ллвм байки не сочиняют

Kanashimia ꑭ support libre software
нет

не похоже что он в цикле складывает

Victor
screenshot не похоже что он в цикле складывает

ну что-то он наоптимизировал, но не то как нужно

Kanashimia ꑭ support libre software
нет

pub fn main() { let n: u32 = 1000; let now = std::time::Instant::now(); let res: u32 = sum(n); let t = now.elapsed(); dbg!(res); dbg!(t); } #[inline(never)] pub fn sum(n : u32) -> u32 { return (0..n).sum(); } sum схлопнулось до формулы example::sum: test edi, edi je .LBB1_1 lea eax, [rdi - 1] lea ecx, [rdi - 2] imul rcx, rax shr rcx lea eax, [rdi + rcx] add eax, -1 ret

Alex
pub fn main() { let n: u32 = 1000; let now...

вообще там ещё смешно что на плейграунде, стабильном / найтли, годболте везде разный асм выходит

Alex
pub fn main() { let n: u32 = 1000; let now...

почему он параметры со стека забирает что за аби такой странный

Max Силинг
почему он параметры со стека забирает что за аби т...

Где? Через lea просто арифметические операции идут.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта