abs () vs fabs () разность скоростей и преимущество fabs ()

Я провел несколько простых тестов функций abs () и fabs (), и я не понимаю, в чем преимущества использования fabs (), если это:

1) медленнее

2) работает только на поплавках

3) генерирует исключение, если используется на другом типе

In [1]: %timeit abs(5) 10000000 loops, best of 3: 86.5 ns per loop In [3]: %timeit fabs(5) 10000000 loops, best of 3: 115 ns per loop In [4]: %timeit abs(-5) 10000000 loops, best of 3: 88.3 ns per loop In [5]: %timeit fabs(-5) 10000000 loops, best of 3: 114 ns per loop In [6]: %timeit abs(5.0) 10000000 loops, best of 3: 92.5 ns per loop In [7]: %timeit fabs(5.0) 10000000 loops, best of 3: 93.2 ns per loop 

он еще медленнее на поплавках!

С того места, где я стою, единственное преимущество использования fabs () – сделать ваш код более читаемым, потому что, используя его, вы четко заявляете о своем намерении работать с значениями float / double point

Есть ли другое использование fabs ()?

One Solution collect form web for “abs () vs fabs () разность скоростей и преимущество fabs ()”

Из письма от Тима Питерса :

Почему математика имеет функцию fabs? И это, и функция встроенного abs завершают вызов fabs () для поплавков. abs () быстрее загружается.

Ничего глубокого – математический модуль поставляет все в стандартный libm C89 (+ несколько расширений), fabs () – это std C89 libm.

Не существует ясной (для меня) причины, по которой человек был бы быстрее, чем другой; звучит случайно; math.fabs (), безусловно, можно было бы сделать быстрее (как в настоящее время реализовано (через math_1), оно переносит кучу общего назначения «попытайтесь угадать, должен ли libm должен был установить ошибочный» шаблон, который был потрачен впустую (ошибок домена и диапазона не существует для fabs ())).

Кажется, нет никаких выгод для использования fabs . Просто используйте abs для практически всех целей.

  • Как преобразовать строку в функцию в python?
  • функция python, но не возвращающая значение. Должно быть просто
  • Список возврата Python из функции
  • Использование имен строк в разных функциях
  • Можно ли определить функцию в классе
  • Почему эта функция def не выполняется в Python?
  • Функция Python, которая получает письмо, возвращает (на основе 0) числовое значение в алфавите
  • Имя функции возврата в python?
  • Почему Python не ждет завершения моей функции?
  • Объединить одну и ту же функцию с разными параметрами - Python
  • позволяют пользователям «расширять» функции API
  • Python - лучший язык программирования в мире.