round () и round () и round () - PullRequest
       96

round () и round () и round ()

1 голос
/ 05 мая 2020

Почему библиотека cmath такая медленная с точки зрения округления (round, ceil, floor, trunc)?

Речь идет о коэффициенте 10 по сравнению с SSE (roundsd, cvtsd2si) или старым добрым FPU (FIST(P)), причем последнее немного медленнее (20-25%). ), приближаясь с увеличением тактовой частоты.

Я читал статью Л. де Сораса , и его описание довольно ясно. Непосредственный параметр rounds (p) d позволяет выбрать любую возможную схему. Проверяя дизассемблирование round, я не смог обнаружить ни одной команды LDMXCSR, только CVTTSS2SI (скалярное преобразование в int / w trun c).

Итак, почему на 1000% дольше время ожидания действительно часто необходимой функции?

...