Size: a a a

2021 July 01

Т

Тающий звук... in dlang.ru
Я знаю, но ты меня опять не понимаешь — одно дело мне вручную писать циклы и условия всякие внутри, и совсем другое написать в одну строчку что-то типа map.filter
источник

Т

Тающий звук... in dlang.ru
Если допустим при написании вручную, я использую всего один цикл и вставлю всю логику внутрь его тела. А если тоже самое заменить, например, последовательностью map.filter, то сколько циклов создаст компилятор ? 2  ? Цикл для map и цикл для filter или он тоже всё это сможет запихать в один цикл ?
источник

Т

Тающий звук... in dlang.ru
Это надо сгенерированный ассемблерный код смотреть
источник

EP

Egor Pugin in dlang.ru
в один должно влезть
источник

Т

Тающий звук... in dlang.ru
Если в один вставит, то это будет очень хорошо
источник

DH

Dark Hole in dlang.ru
Компилятор не создаст циклы
источник

DH

Dark Hole in dlang.ru
map и filter — это функции
источник

DH

Dark Hole in dlang.ru
На всякий случай напоминаю, что они ещё и ленивые
источник

DH

Dark Hole in dlang.ru
(с чем связан забавный баг)
источник

DH

Dark Hole in dlang.ru
А да, это ещё рейнджи
источник

DH

Dark Hole in dlang.ru
С учётом всего этого, цикл будет там, где этот рейндж считывают
источник

Т

Тающий звук... in dlang.ru
Вот поэтому я и сомнивался, то это по эффективности будет равняться циклу
источник

Т

Тающий звук... in dlang.ru
Недавно у меня была идея попробовать, через метапрограммирование сделать тоже самое, но чтобы генерировался один цикл, ну либо столько, сколько минимально будет нужно
источник

DH

Dark Hole in dlang.ru
Ну ты же знаешь как рейнджи работают?
источник

Т

Тающий звук... in dlang.ru
Я так понимаю, что они передают объект, в котором есть функции empty, front, и popFront (и обратные) и через них и осуществляется перебор
источник

DH

Dark Hole in dlang.ru
Ага, а ленивость позволяет переместить всю логику в функцию popFront
источник

DH

Dark Hole in dlang.ru
Таким образом у тебя map/filter вычисляются когда потребуется
источник

EP

Egor Pugin in dlang.ru
выше где-то я кидал презентацию про сравнение ренжей
источник

EP

Egor Pugin in dlang.ru
тут
источник

Т

Тающий звук... in dlang.ru
Примерно представляю
источник