快速浮动代表
frepr的Python项目详细描述
快速启动
>>>importfrepr>>>frepr.frepr(-1.8397892359791307e+134)'-1.8397892359791307e+134'>>>fromtimeitimporttimeit>>>timeit('repr(-1.8397892359791307e+134)')2.7296602272476758>>>frepr.install()>>>timeit('repr(-1.8397892359791307e+134)')0.35723431229251545>>>frepr.uninstall()
API
frepr.frepr(value)
返回浮点值的最短字符串表示形式。论据 不必是float,只要它可以强制为1(即 一个__float__()方法)。
frepr.install()
monkey修补python运行时。对浮动上repr()的后续调用 将使用更快的算法。这是安全的多次呼叫。
frepr.uninstall()
反转由install()完成的猴子修补。后续呼叫 repr()将使用原始的内置算法。这是安全的 多次,即使没有首先调用install()。
功能
- 平均值,比标准函数快约8X。(这个结果 在Python3.6.0 64位/Windows7/Intel Core i3@2.93GHz上获得。测试您的 使用tests/perf.py的自有系统。
- 加快标准json包(以及任何依赖于 repr())。
- 输出保证包含最短的十进制数字字符串 唯一标识原始ieee 754浮点值所必需的。
- 保证满足value == ast.literal_eval(frepr(value))。
- 在cpython 2.6到3.6上测试过;可能也可以在其他版本上工作。
限制
- 目前,还不支持替代的python实现(例如。 皮比)。
- 输出可能与本机函数略有不同,原因是 浮点舍入(但请参阅上面的精度保证)。
- 对将浮点转换为字符串的其他内置方法没有影响(例如 str(),str.format(),"%f","%g")。
另请参见
- https://github.com/google/double-conversion-核心算法 实施。这是chrome的v8所使用的相同实现 javascript引擎等等。
- https://bugs.python.org/issue12450-cpython 2011年发行 想法。