微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

avalon-fsn Python 编译构造工具

程序名称:avalon-fsn

授权协议: Mulan

操作系统: 跨平台

开发语言: Python

avalon-fsn 介绍

avalon-fsn

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

使用avalon-fsn的好处

安装

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倍

avalon-fsn 官网

https://gitee.com/umaru_ex/avalon-fsn

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐