C/C++——Tchisla求解器(多线程高性能版本)

作者分享了将Python编写的Tchisla求解器重写为C++的原因,着重于优化内存使用和引入多线程,使得性能提升显著,C++版本在解决1234问题时速度提高了1000%以上。同时,C++版本提供了命令行接口(CLI)以调整参数。
摘要由CSDN通过智能技术生成

前言

之前一篇文章中介绍的使用Python写的Tchisla求解器Python——Tchisla求解器(暴力搜索法)在我实际使用中有比较大的缺陷,首先是太慢了,对于每日一题中四位数的目标数字,往往搜索数个小时都找不完1~9的全部最优解,尤其是5和7这两最慢。其次是内存占用太多,跑一些大数字的搜索,能用掉上百G的内存。使用Python编写不好控制内存使用,因为GIL也没办法做多线程性能加速,所以后面我又用C++重写了一个版本,思路还是一样的暴力搜索,但是优化了内存使用并加上了多线程并发搜索能力。

不得不说Python和C++比起来,开发这种小程序的效率是高到不知道哪里去了,用Python几个小时写完的东西,用C++愣是断断续续写了小半周。不过付出总是有回报的,C++版本的TchislaSlover内存占用小了很多,性能提升就更明显了,有1000%+,如图,同样是搜索1234的1~9解法,上图为Python版本,下图为C++版本:
在这里插入图片描述
在这里插入图片描述
可以发现Python版本运行了四十多分钟,C++版本四分钟不到就跑完了,速度快了很多。

用法

C++程序想要修改一些参数不像Python脚本一样手动改下脚本重新运行就行了,因此个给C++版本还加了个了CLI,用的argh库实现了参数的解析,用法如图所示:
在这里插入图片描述
C++程序需要自己编译,代码分为了好几个文件不方便贴,就放在github了,链接如下:https://github.com/Eyizoha/TchislaSolver
项目里有Makefile,在linux中使用make指令直接编译就行了,windows中可以用vs自己建个项目导入文件编译。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值