avalon-fsn 是一个Python的编译构造工具,能够将你的代码Cython
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')
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
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 avalon-fsn 是一个Python的编译构造工具,能够将你的代码Cython 使用avalon-fsn的好处 代码Cython化:Windows下把代码编译为pyd,Linux下把代码编译为.so,有效的保护源代码 获得性能提升:能够在不做任何代码级别优化的情况下,对Python代码进行性能提升 安装 pip install avalon-fsn 编译项目 avalon
avalon 是一个功能强大,体积小巧的 MVVM 框架。它遵循“操作数据即操作DOM”的理念,让你在代码里基本见不到一点DOM操作代码。DOM操作全部在绑定后,交给框架处理。相当后端有了ORM一样,不用你手写SQL,提高生产力! 与其它js框架相比,同样实现著名的todos功能,(参见todomvc官网),在所有MV*的实现中avalon是让用户写代码最少的。 与其他MV
提供用于创建自定义子句和编译器的API。 简介 使用涉及创建一个或多个 ClauseElement 子类和定义其编译的一个或多个可调用文件: from sqlalchemy.ext.compiler import compiles from sqlalchemy.sql.expression import ColumnClause class MyColumn(ColumnClause):
该程序应该提示用户输入日期,它会自行递增。我遇到了DateTest类的问题。错误消息说“无法在数组类型Date[]上调用nextDay()” 已更新 我删除了不必要的语句。但是现在我收到了这个错误消息, 错误:在类Date中找不到Main方法,请将Main方法定义为:public static void Main(String[]args) 我必须把主要方法移动到任何地方吗?
webpack配置 下图是采用 Mpx 开发小程序时,一个简短的 webpack 配置。配置说明可参考图中注释以及子项说明。 module.exports = { entry: { app: resolveSrc('app.mpx') }, output: { // 和 webpack 配置一致,编译后文件输出的路径 path: resolveDist(),
词法分析器 语法分析器 语义分析及中间代码生成 代码优化 代码生成
我有一个带有两个64位整数成员的结构X,以及一个构造函数: