登录  | 立即注册

游客您好!登录后享受更多精彩

QQ登录

只需一步,快速开始

查看: 3327|回复: 0

你的VNPY开源量化平台够快吗?性能对比测试

[复制链接]

62

主题

103

帖子

1148

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1148
发表于 2022-4-22 15:03:05 | 显示全部楼层 |阅读模式
你的VNPY开源量化平台够快吗?性能对比测试

请实时关注项目更新,微信搜索“VNPY官方”
bbb.png
上次我们说了pyinstaller打包VNPY客户端的方法,本文说一说后起之秀Nuitka的打包VNPY Python开源量化客户打方法。




由于程序运行需要保持目录完整性,所以无论是采用 pyinstaller还是 Nuitka打包, 在打包参数选择的时候,打包成目录即可,而不要打包成单独的exe程序 。
Nuitka和其他方案不同的是,Nuitka是静态编译, 对比其他大部分打包工具,Nuitka则是完全的编译工具,编译后的可执行文件已经不需要字节码解释了, 都是调用dll内 API 实现各种功能。
打包前,都需要安装VC2015及以上版本,或MinGW。
安装Nuitka
pip install nuitka

如果要完全脱离python环境,可以使用命令行
Nuitka 打包指令:
nuitka --follow-import --standalone  –icon=app_icon.ico vntrader.py

打包后保存在 vntrader.dist 目录
对于VNTrader这样依赖项较多的Python 开源项目,采用Nuitka  打包时间是更彻底的转C代码,所以打包时间更慢,实际操作中Nuitka打包时间是pyinstaller的数倍.。
nuitka的打包过程,更复杂,需要处理更多工作,需要等待较长时间。
当然nuitka 打包后性能也会优于pyinstaller。

虽然 nuitka  和 pyinstaller这2个打包工具,都会将python代码转化为C代码,并进行编译,但nuitka是可以指定某些库是不要再经过编译的,比如numpy,jinja2,matplotlib,scipy,sqlalchemy,pandas,pygal,pyzbar,win32com 这些,这些库本身已经做了优化,如果被 nuitka 转换为C代码重新编译 ,只会降低速度, 所以打包时指令可以改为 :
nuitka --follow-import --standalone    –icon=vnpy.ico  --recurse-not-to=numpy,jinja2,matplotlib,scipy,sqlalchemy,pandas,pygal,pyzbar,win32com  vntrader.py
这样就实现了以上这些库让打包好的exe文件夹内的python3x.dll来执行,不用去理会各个模块的版本依赖和江湖恩怨,实现高度自治,而我们自己开发的模块,以及UI界面和数据库的连接以及函数和功能实现,需要加密和快速反应的, 就借助Nuitka来实现转C代码重新编译优化。

这样处理,编译速度不仅更快,而且性能也更高。

Nuitka可将python代码转换为C++,然后编译为 可执行程序,其通过直接调用python的api的方式实现从解析语言到编译语言的转换,并且在转换到C++的过程中直接使用python的解释器,可以保证100%的语法兼容。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|VNPY官方Python开源量化社区 ( 沪ICP备17025576号-16 )

GMT+8, 2024-5-9 05:41 , Processed in 0.054195 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表