【问题标题】:Floating point vs integer performance浮点与整数性能
【发布时间】:2011-08-22 21:57:44
【问题描述】:

在开发编程语言时,区分整数和浮点数重要吗?我注意到在R 的情况下,虽然它们确实允许严格的整数类型,但主要处理可以是浮点数或整数的numeric 类型。有性能优势吗?

编辑
我也有兴趣了解更多关于何时(如果有的话)通过选择浮点数而不是整数会注意到性能差异的时间段。

【问题讨论】:

  • 您是在问浮点数学是否与整数数学一样高效?
  • .. 或者这些年来浮点运算中可能的精度损失是否变得不那么重要了?
  • 这显然取决于您的用例。看看c2.com/cgi/wiki?PrematureOptimization。如果这不能解决您的问题,请使用docs.python.org/library/timeit.html 来衡量它是否重要。
  • 我想知道是否会因为将所有内容都设为浮点数(所有数字而非索引)而降低性能。

标签: python integer floating-point double


【解决方案1】:

如果您谈论的是性能:在大多数情况下,没有性能差异。您可能仍然可以在编译为机器代码的纯数字运算代码中测量一个,以及在没有专用 FPU 的硬件(即主要是嵌入式的东西)上稍微少一些数学强度的代码。但是对于 Python(和许多其他语言),硬件性能的任何差异都会因解释和装箱开销而相形见绌(相差许多数量级)。当数字被视为指向 16 字节结构的指针时,添加是响应解释的操作码的动态调度方法调用,实际处理需要 1 纳秒还是 100 纳秒都没有关系。

从语义上讲,整数和实数(的近似值)之间的差异仍然并且永远是一个数学事实,而不是计算机工程技术的必然结果。例如,浮点数(一般来说,不是从完全是整数的浮点数进行隐式转换)永远不会作为索引有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多