news 2026/3/15 2:51:54

将利用30行X算法求解数独的python程序转成DuckDB自定义函数并比较性能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
将利用30行X算法求解数独的python程序转成DuckDB自定义函数并比较性能

将利用DeepSeek辅助改造30行DLX求解数独python程序 和 调用python函数的不同方法效率对比测试 的代码整合在一起

只要把代码粘贴到一个文件,比如duckudf.py,然后增加如下语句

duckdb.create_function("solve_single_sudoku",solve_single_sudoku)#, [VARCHAR, [[VARCHAR]], BIGINT)s=""" select solve_single_sudoku('000080304250100090000003000040020030006090800700310009000000080602000053004002900'); """t=time.time();print(duckdb.sql(s));print(time.time()-t)

并修改以下函数的定义,添加参数和返回值类型

defsolve_single_sudoku(sudoku_str:str)->str:

并删除原有的自定义函数及全局的代码块

if__name__=="__main__":# 运行文档测试importdoctest doctest.testmod()# 运行主函数main()

然后用如下命令行测试

C:\d>timer64 python duckudf.py 1 ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ solve_single_sudoku('000080304250100090000003000040020030006090800700310009000000080602000053004002900') │ │ varchar │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 167589324253174698498263175941827536326495817785316249579631482612948753834752961 │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 0.25064992904663086 Kernel Time = 0.156 = 35% User Time = 0.234 = 52% Process Time = 0.390 = 87% Virtual Memory = 541 MB Global Time = 0.445 = 100% Physical Memory = 90 MB C:\d>timer64 python pydlx4path.txt [[0, 0, 0, 0, 8, 0, 3, 0, 4], [2, 5, 0, 1, 0, 0, 0, 9, 0], [0, 0, 0, 0, 0, 3, 0, 0, 0], [0, 4, 0, 0, 2, 0, 0, 3, 0], [0, 0, 6, 0, 9, 0, 8, 0, 0], [7, 0, 0, 3, 1, 0, 0, 0, 9], [0, 0, 0, 0, 0, 0, 0, 8, 0], [6, 0, 2, 0, 0, 0, 0, 5, 3], [0, 0, 4, 0, 0, 2, 9, 0, 0]] [[1, 6, 7, 5, 8, 9, 3, 2, 4], [2, 5, 3, 1, 7, 4, 6, 9, 8], [4, 9, 8, 2, 6, 3, 1, 7, 5], [9, 4, 1, 8, 2, 7, 5, 3, 6], [3, 2, 6, 4, 9, 5, 8, 1, 7], [7, 8, 5, 3, 1, 6, 2, 4, 9], [5, 7, 9, 6, 3, 1, 4, 8, 2], [6, 1, 2, 9, 4, 8, 7, 5, 3], [8, 3, 4, 7, 5, 2, 9, 6, 1]] Kernel Time = 0.000 = 0% User Time = 0.031 = 87% Process Time = 0.031 = 87% Virtual Memory = 7 MB Global Time = 0.035 = 100% Physical Memory = 12 MB C:\d>

第一个命令行是调用duckdb执行自定义函数,第二个是直接执行python程序。可见调用duckdb执行自定义函数的用时是后者15倍,内存占用也放大了很多倍。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 7:34:55

图解说明Keil5破解中License文件的生成与修改方法

深入理解Keil5授权机制:从License文件到注册机的原理与实践 你有没有遇到过这样的情况?刚装好Keil μVision5,信心满满地开始写代码,结果一编译弹出提示:“ Evaluation Version - Code Size Limited to 64KB ”。那一…

作者头像 李华
网站建设 2026/3/9 21:31:45

多点触控screen在工业场景的应用:前沿探讨

多点触控屏如何“撬动”工业智能化?一场关于效率与交互的深度革命你有没有遇到过这样的场景:在一条自动化产线上,操作员面对密密麻麻的按钮和层层嵌套的菜单,花了三分钟才找到一个参数调节入口?或者维修工程师站在设备…

作者头像 李华
网站建设 2026/3/8 15:48:16

NVIDIA NeMo适合企业吗?庞大复杂,中小团队难驾驭

轻量化语音克隆崛起:为何企业更该关注易用性而非技术堆栈 在智能客服、虚拟主播和多模态内容生成的浪潮中,语音合成已不再是实验室里的前沿玩具,而是企业数字化转型中的关键能力。越来越多公司希望为产品“赋予声音”——无论是打造个性化的语…

作者头像 李华
网站建设 2026/3/14 14:53:48

c++程序中spidev0.0 read返回255的信号完整性问题探究

为什么我的 C 程序从 spidev0.0 读出的数据全是 255?一次深入的信号完整性与系统调试之旅 你有没有遇到过这样的情况:明明代码写得没问题, open("/dev/spidev0.0") 成功了, ioctl(SPI_IOC_MESSAGE) 也执行了&#x…

作者头像 李华
网站建设 2026/3/6 22:02:50

Windows启动加速终极指南:快速解决开机缓慢问题

Windows启动加速终极指南:快速解决开机缓慢问题 【免费下载链接】Sophia-Script-for-Windows farag2/Sophia-Script-for-Windows: Sophia Script 是一款针对Windows系统的自动维护和优化脚本,提供了大量实用的功能来清理垃圾文件、修复系统设置、优化性能…

作者头像 李华
网站建设 2026/3/4 2:36:55

cuDNN是否必需?是,深度学习推理依赖该库

cuDNN是否必需?是,深度学习推理依赖该库 在今天这个AI模型越来越“重”的时代,我们早已习惯了动辄几十亿参数的语音合成系统。比如阿里开源的 CosyVoice3,号称只需3秒音频就能克隆出一个人的声音,支持多语言、多情感、…

作者头像 李华