Size: a a a

Compiler Development

2020 November 22

E

EgorBo in Compiler Development
хак кланга делает деление лонгов в 5!! раз быстрее для чисел, меньших 32бит
источник

E

EgorBo in Compiler Development
по крайней мере на кофи лейке
источник

FO

FORTRAN ONE LOVE in Compiler Development
EgorBo
хак кланга делает деление лонгов в 5!! раз быстрее для чисел, меньших 32бит
в табличку подсматривает?:)
источник

E

EgorBo in Compiler Development
FORTRAN ONE LOVE
в табличку подсматривает?:)
нет же, выше ссылка
источник

E

EgorBo in Compiler Development
источник

K

Kakadu in Compiler Development
А можно для чайников, как он понимает, что число влезает в 32бита?
источник

DF

Dollar Føølish in Compiler Development
Возможно этот хак кланга был бы особенно полезен на камнях без аппаратного делителя
источник

AP

Antony Polukhin in Compiler Development
а неудачный branch prediction сколько откушает тактов (в случае малого числа он случится)?
ну и для больших чисел мы получаем доп оверхед в пару тактов

Вопрос вообще холиварный) Там godbolt прикрутил анализатор производительности ОСАКА, надо глнуть что он думает по этому поводу
источник

E

EgorBo in Compiler Development
Kakadu
А можно для чайников, как он понимает, что число влезает в 32бита?
je ((a | b) >> 32)
источник

E

EgorBo in Compiler Development
> ну и для больших чисел мы получаем доп оверхед в пару тактов

6-7% оверхед против 500-600% импрувмент
источник

E

EgorBo in Compiler Development
технически, в JIT/PGO сценариях можно убрать оптимизацию если видно что код идет все время в 64битный див
источник

AP

Antony Polukhin in Compiler Development
OSACA говорит что там оверхед сильно побольше
18.00 у GCC против 27.76 CLANG для больших чисел
источник

AP

Antony Polukhin in Compiler Development
а, нет, он обе ветки сложил
источник

AP

Antony Polukhin in Compiler Development
18.00 у GCC против 20.76 или ~8.00 у clang
источник

E

EgorBo in Compiler Development
это сильно зависит от цпу
источник

E

EgorBo in Compiler Development
например на Zen2 эта оптимизация не имеет смысла
источник

E

EgorBo in Compiler Development
а когда у тебя такая огромная разница в латенси и пропускной как в скайлейках - еще как имеет
источник

AT

Alexander Tchitchigi... in Compiler Development
Поскольку у нас всё ещё есть люди, которые не умеют комбинировать парсеры. 😊
источник

AT

Alexander Tchitchigi... in Compiler Development
Приходите 2 декабря на вебинар по парсерным комбинаторам на TypeScript, который я буду вести в качестве гостя коммьюнити Math.random(): https://mathrandom.com/webinar0212
Материал рассчитан на начинающую аудиторию, поэтому я начну с азов: быстренько пройдусь по крохотной части теории компиляции, разберу понятие функционального парсера и парсерных комбинаторов, и покажу, как мне изящно удалось решить задачу парсинга строки поискового запроса с булевыми операторами в ней в ~200 строк кода (а на самом деле даже меньше).
источник

M

MaxGraey in Compiler Development
Забавно, этот fast path clang применяет аж с 4й версии
источник