当前位置: 首页 > 工具软件 > avalon-fsn > 使用案例 >

python编译 pyd 工具_avalon-fsn首页、文档和下载 - Python 编译构造工具 - OSCHINA - 中文开源技术交流社区...

花稳
2023-12-01

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倍

 类似资料: