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

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

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

17 ответов

14 просмотров

да: 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 не похоже что он в цикле складывает

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

Victor
Это ведь ещё 128 числа

бывает, я на u32 проверяю

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 просто арифметические операции идут.

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

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

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Дык какой описанный сценарий то? Единственное, что вижу я - это то что есть какой то интерфейс1 , про который известно, что у него есть метод, который возвращает другой интерф...
Jack128
7
А если без шуток, на чем десктоп сейчас пишут кроссплатформенный (ну чтобы с минимальным допиливанием под каждую платформу) и чтобы хорошая производительность софта была. Толь...
🐈
9
Карта сайта