一个纯python库,用于使用numba进行基准测试的可伸缩数字
fastats的Python项目详细描述
#快速
[(https://travis ci.org/fastats/fastats)
[(https://ci.appveyor.com/project/pawroman/fastats/branch/master)
[(https://codecov.io/gh/fastats/fastats)
[(https://www.codacy.com/app/dave.willmer/fastats?utm_source=github.com&;utm_medium=referral&;utm_content=fastats/fastats&;utm_campaign=badge_grade)
[(https://opensource.org/licenses/mit)
一个纯python库,用于基准化、可伸缩的数字,使用[numba]构建(https://numba.pydata.org/)。
[fastats邮件列表](https://groups.google.com/forum/!!论坛/快速学习)
--
数据越来越大,越来越复杂,代码很难扩展到这些级别。代码越来越大,越来越复杂,开发人员很难扩展到这些级别。
更容易调试。
``fastats`(即fast stats)试图通过在公共函数中使用线性代数进行性能优化,使用[numba](https://numba.pydata.org/)
从[anaconda](https://www.anaconda.com/)jit编译优化的python code到
矢量化的本机代码,而在纯python模式下运行进行调试则很简单。
对于单调函数,我们可以使用newton-raphson解算器来查找根:
`` python
从fastats导入newton-raphson
def my-raphson(x):
返回x**3-x-1
result=newton-raphson(0.025,1e-6,root=my-func)
````
这使用[numba](https://numba.pydata.org/)在后台jit将python代码编译为本地代码,并在需要时使用fastats转换调用"my_func"。
但是,我们通常希望使用fast函数并将其应用于大型数据集,因此"fastats"允许您将优化的函数作为调用返回table:
`` python
newton opt=newton raphson(0.025,1e-6,root=my_func,return_callable=true)
result=newton opt(0.03,1e-6)
````
.03,1e-6)
785 ns±8.2 ns/循环(7次运行的平均值±标准偏差,每次运行1000000个循环)
````
ewton(my_func,x0=0.03,tol=1e-6)
25.6μs±954ns/圈(平均值±标准偏差,7次,每次10000圈)
````
python/lua/ruby等大多数高级语言都有一个正式的c-api,它允许我们轻松地"下拉"到本机代码(如上面所示的scipy)。然而,这不仅费时、容易出错而且让许多开发人员感到不快,而且从上面的例子中可以看出,专门的C扩展不会自动扩展到更大的数据。
通过使用[numba](https://numba.pydata.org/)来JIT编译整个函数输入输出n降到本机代码,我们可以快速地扩展到更大的数据大小,而不必离开python的简单性。
秘密在于处理函数参数。
这对于专业图书馆来说很有效,但是在这个"大"数据的世界里,下一步通常是"现在我想将这个函数应用到这个1000万个项目的数组中"。这就是c扩展/本机库技术的失败之处。
c扩展到高级语言必然受到定义的api的限制,即,您可以编写一个c函数来获取3个浮点或3个浮点数组,但处理任意输入是非常困难的。
``fastats``允许您将函数作为参数传递到``numba``中,从而抽象出特定的循环或并发结构,从而加快、更干净的开发时间和更快的执行时间。
python>;=仅限3.5。强烈建议使用python 3.6或更新版本。
/>有关测试要求,请查看[.travis.yml](.travis.yml)或[.appveyor.yml](.appveyor.yml)。
####发起人
<;img src="http://pico-software.com/images/picosoftware.png"width="300"alt="pico software"title="pico software"/>;
[(https://travis ci.org/fastats/fastats)
[(https://ci.appveyor.com/project/pawroman/fastats/branch/master)
[(https://codecov.io/gh/fastats/fastats)
[(https://www.codacy.com/app/dave.willmer/fastats?utm_source=github.com&;utm_medium=referral&;utm_content=fastats/fastats&;utm_campaign=badge_grade)
[(https://opensource.org/licenses/mit)
一个纯python库,用于基准化、可伸缩的数字,使用[numba]构建(https://numba.pydata.org/)。
[fastats邮件列表](https://groups.google.com/forum/!!论坛/快速学习)
--
数据越来越大,越来越复杂,代码很难扩展到这些级别。代码越来越大,越来越复杂,开发人员很难扩展到这些级别。
更容易调试。
``fastats`(即fast stats)试图通过在公共函数中使用线性代数进行性能优化,使用[numba](https://numba.pydata.org/)
从[anaconda](https://www.anaconda.com/)jit编译优化的python code到
矢量化的本机代码,而在纯python模式下运行进行调试则很简单。
对于单调函数,我们可以使用newton-raphson解算器来查找根:
`` python
从fastats导入newton-raphson
def my-raphson(x):
返回x**3-x-1
result=newton-raphson(0.025,1e-6,root=my-func)
````
这使用[numba](https://numba.pydata.org/)在后台jit将python代码编译为本地代码,并在需要时使用fastats转换调用"my_func"。
但是,我们通常希望使用fast函数并将其应用于大型数据集,因此"fastats"允许您将优化的函数作为调用返回table:
`` python
newton opt=newton raphson(0.025,1e-6,root=my_func,return_callable=true)
result=newton opt(0.03,1e-6)
````
.03,1e-6)
785 ns±8.2 ns/循环(7次运行的平均值±标准偏差,每次运行1000000个循环)
````
ewton(my_func,x0=0.03,tol=1e-6)
25.6μs±954ns/圈(平均值±标准偏差,7次,每次10000圈)
````
python/lua/ruby等大多数高级语言都有一个正式的c-api,它允许我们轻松地"下拉"到本机代码(如上面所示的scipy)。然而,这不仅费时、容易出错而且让许多开发人员感到不快,而且从上面的例子中可以看出,专门的C扩展不会自动扩展到更大的数据。
通过使用[numba](https://numba.pydata.org/)来JIT编译整个函数输入输出n降到本机代码,我们可以快速地扩展到更大的数据大小,而不必离开python的简单性。
秘密在于处理函数参数。
这对于专业图书馆来说很有效,但是在这个"大"数据的世界里,下一步通常是"现在我想将这个函数应用到这个1000万个项目的数组中"。这就是c扩展/本机库技术的失败之处。
c扩展到高级语言必然受到定义的api的限制,即,您可以编写一个c函数来获取3个浮点或3个浮点数组,但处理任意输入是非常困难的。
``fastats``允许您将函数作为参数传递到``numba``中,从而抽象出特定的循环或并发结构,从而加快、更干净的开发时间和更快的执行时间。
python>;=仅限3.5。强烈建议使用python 3.6或更新版本。
/>有关测试要求,请查看[.travis.yml](.travis.yml)或[.appveyor.yml](.appveyor.yml)。
####发起人
<;img src="http://pico-software.com/images/picosoftware.png"width="300"alt="pico software"title="pico software"/>;