Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Кстати, в Intel Ice Lake уменьшили латенси у idiv более чем в 5 раз до 18 циклов (не помню на счет пропускной способности) — а это уже не так страшно как ранее.
можем получить Latency в 25-119 clock cycles, а reciprocal throughput — 25-120.
Fraction часть числа B.
умножению на truncating with rounding up 0.1
получение старших битов 64 битного произведения в C++ коде реализуется интринсиком (something like mulh)
Но, теперь, когда вы понимаете как это работает, можете сами с легкостью заменить деление — умножением, не полагаясь на милость компилятору
…если делитель известен на этапе компиляции, есть возможность заменить целочисленное деление умножением и логическим сдвигом вправо (а иногда, можно обойтись и без него вовсе — я конечно про реализацию в Языке Программирования)Если у меня в коде есть выражение X/10, что мне мешает просто заменить его на X*0.1?
Делись, рыбка, быстро и нацело