avalon-fsn 1.0.0 发布:轻松加速你的 Python 代码

栏目: 软件资讯 · 发布时间: 6年前

内容简介:avalon-fsn avalon-fsn 是一个Python的编译构造工具,能够将你的代码Cython化 使用avalon-fsn的好处 代码Cython化:Windows下把代码编译为pyd,Linux下把代码编译为.so,有效的保护源代码 获得性能提升:能够在不...

avalon-fsn

avalon-fsn 是一个 Python 的编译构造工具,能够将你的代码Cython化

使用avalon-fsn的好处

  • 代码Cython化:Windows下把代码编译为pyd,Linux下把代码编译为.so,有效的保护源代码
  • 获得性能提升:能够在不做任何代码级别优化的情况下,对Python代码进行性能提升

安装

pip install avalon-fsn

编译项目

avalon-fsn-build build_ext

编译完毕后,对应的文件会在./build/lib*底下

使用编译后的文件

avalon-fsn-release

执行此命令会把build目录下的编译文件替换到根目录下,仅在编译发布环境使用

##配置文件 当有定制参数的时候,可以在项目根目录下新建配置文件avalon-fsn.json

{
  "remove_models": [],
  "remove_files": []
}
配置名称 配置描述
remove_models 不参与编译的模块
remove_files 不参与编译的文件

性能对比

import time


def run():
    time_start = time.time()
    import sys

    def make_tree(depth):
        if not depth: return None, None
        depth -= 1
        return make_tree(depth), make_tree(depth)

    def check_tree(node):
        (left, right) = node
        if not left: return 1
        return 1 + check_tree(left) + check_tree(right)

    min_depth = 4
    max_depth = max(min_depth + 2, 17)
    stretch_depth = max_depth + 1

    print("stretch tree of depth %d\t check:" %
          stretch_depth, check_tree(make_tree(stretch_depth)))

    long_lived_tree = make_tree(max_depth)

    iterations = 2 ** max_depth

    for depth in range(min_depth, stretch_depth, 2):

        check = 0
        for i in range(1, iterations + 1):
            check += check_tree(make_tree(depth))

        print("%d\t trees of depth %d\t check:" % (iterations, depth), check)
        iterations //= 4

    print("long lived tree of depth %d\t check:" %
          max_depth, check_tree(long_lived_tree))

    time_end = time.time()
    print('time cost', time_end - time_start, 's')

纯Python

stretch tree of depth 18	 check: 524287
131072	 trees of depth 4	 check: 4063232
32768	 trees of depth 6	 check: 4161536
8192	 trees of depth 8	 check: 4186112
2048	 trees of depth 10	 check: 4192256
512	 trees of depth 12	 check: 4193792
128	 trees of depth 14	 check: 4194176
32	 trees of depth 16	 check: 4194272
long lived tree of depth 17	 check: 262143
time cost 11.279994249343872 s

Cython化

stretch tree of depth 18	 check: 524287
131072	 trees of depth 4	 check: 4063232
32768	 trees of depth 6	 check: 4161536
8192	 trees of depth 8	 check: 4186112
2048	 trees of depth 10	 check: 4192256
512	 trees of depth 12	 check: 4193792
128	 trees of depth 14	 check: 4194176
32	 trees of depth 16	 check: 4194272
long lived tree of depth 17	 check: 262143
time cost 1.9600331783294678 s

简单编译之后,性能直接就提升近6倍


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

生物信息学算法导论

生物信息学算法导论

N.C.琼斯 / 第1版 (2007年7月1日) / 2007-7 / 45.0

这是一本关于生物信息学算法和计算思想的导论性教科书,原著由国际上的权威学者撰写,经国内知名专家精心翻译为中文,系统介绍推动生物信息学不断进步的算法原理。全书强调的是算法中思想的运用,而不是对表面上并不相关的各类问题进行简单的堆砌。 体现了以下特色: 阐述生物学中的相关问题,涉及对问题的模型化处理并提供一种或多种解决方案: 简要介绍生物信息学领域领军人物; 饶有趣味的小插图使得概念更加具体和形象,方......一起来看看 《生物信息学算法导论》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具