news 2026/5/1 11:31:30

将利用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/5/1 8:12:06

PyFluent实战指南:从零开始构建CFD自动化工作流

PyFluent实战指南:从零开始构建CFD自动化工作流 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/py/pyfluent 你是否曾经为重复的Fluent设置工作感到厌倦?每次仿真都要手动点击菜单、设…

作者头像 李华
网站建设 2026/5/1 9:27:19

WeiboSpider微博数据采集实战:从入门到精通

WeiboSpider微博数据采集实战:从入门到精通 【免费下载链接】weibospider 项目地址: https://gitcode.com/gh_mirrors/weib/WeiboSpider 想要高效获取微博平台的海量数据?WeiboSpider作为一款专业的微博数据采集工具,能够帮助研究人员…

作者头像 李华
网站建设 2026/5/1 9:25:35

终极MacBook刘海屏神器:Boring Notch让你的菜单栏焕发新生

还记得第一次看到MacBook刘海屏时的复杂心情吗?既为苹果的创新设计感到兴奋,又为那个"碍眼"的黑色区域感到无奈。但今天,我要向你介绍一款彻底改变刘海屏体验的工具——Boring Notch,它不仅解决了刘海的尴尬&#xff0c…

作者头像 李华
网站建设 2026/4/29 1:51:25

星火应用商店完整使用指南:Linux用户的终极软件管理方案

星火应用商店作为领先的Linux应用分发平台,彻底改变了传统软件安装的复杂体验。这款专为Linux桌面生态打造的工具,让软件管理变得前所未有的简单高效。无论您是Linux新手还是资深用户,星火应用商店都能提供完美的软件管理解决方案。 【免费下…

作者头像 李华
网站建设 2026/5/1 8:38:20

终极指南:零基础快速实现网页3D模型展示神器

终极指南:零基础快速实现网页3D模型展示神器 【免费下载链接】model-viewer Easily display interactive 3D models on the web and in AR! 项目地址: https://gitcode.com/gh_mirrors/mo/model-viewer 还在为网页上展示3D模型而烦恼吗?&#x1…

作者头像 李华
网站建设 2026/5/1 10:03:38

YuYuWechat微信自动化完整教程:告别重复劳动的高效解决方案

YuYuWechat微信自动化完整教程:告别重复劳动的高效解决方案 【免费下载链接】YuYuWechat 一个让微信(非WEB版)定时循环发送消息/文件(cron表达式精确到分钟),批量群发消息,定时检查聊天记录的小…

作者头像 李华