跳到主要内容

openpyxl性能优化实战小记

· 阅读需 3 分钟

最近做了个Excel文件处理小工具给一个项目使用,但是一个Excel文件要处理大概两分钟,我觉得这也太慢了,虽然电脑性能一般。因为就是读一个Excel文件,然后写一个Excel文件,也不涉及什么数据库、网络之类的,应该很快才对。 于是,我让AI去做性能优化,毕竟小工具的代码也是Vibe Coding出来的。起初我并没有太在意,不过,当我发现AI为了做性能优化开始修改openpyxl的源码,并且效果很显著时,我觉得有必要看一下了,学习一下。 学习了下本次的性能优化过程,整理了本次性能优化的改动点,然后就有了本篇文章。

用 cProfile 找热点​

import cProfile, pstats, io

pr = cProfile.Profile()
pr.enable()
# ... 业务代码 ...
pr.disable()

s = io.StringIO()
pstats.Stats(pr, stream=s).sort_stats("cumulative").print_stats(30)
print(s.getvalue())

用DeepSeek Harness做了个个人网站工具

· 阅读需 4 分钟

前言​

静态博客维护起来有点麻烦,尤其是对于图片的处理。之前为了处理博客里的图片,用Shell脚本写过工具,用Python写过,用Go写过,涉及图片上传到图床、图片压缩等。换来换去,现在基本不用图床了,图片直接和Markdown文件放一起,便于管理。由于我的网站用的国外的服务,访问速度不快,所以我会把图片进行压缩,这样页面加载起来可以快一点。考虑到avif格式图片压缩率比较高,现在我网站的图片基本都用avif格式了。一直以来,我都是用自己写的命令行工具去进行图片的处理的,勉强够用。

除了图片,我还会让AI给我生成博客的slug,这样URL的观感会好一些。最近体验了下DeepSeek Harness,我突然想用它来给我做个个人网站工具网站,这样能方便一些。

用DSH写工具​

说干就干,我先简单调研了下,因为Docusaurus是基于NodeJS的,所以我想用纯NodeJS做,不想用Python、Go之类的后端语言,于是用NestJS+Vue这样的技术栈。

我整理了下我的需求,写了2000多字的提示词,然后喂给DeepSeek。它自动启用goal模式,并列出任务清单执行,还自动构建、测试。

Docusaurus主题定制:给归档页加上博文计数

· 阅读需 3 分钟

网站迁移到 Docusaurus 有一段时间了,整体感觉还行,虽然不那么花里胡哨,不过现在也懒得把网站整得花里胡哨了。用过Hexo、Hugo,也用过 Typecho,用过别人的主题,也自己魔改过,如今换到Docusaurus了,打算长期就用这个了。

不过,Docusaurus 的归档页有个让我这个强迫症很难受的地方,归档页的标题和副标题都是“历史博文”,显得很累赘。我想把副标题改为博文计数,经过一番折腾,终于做到了,效果如下:

DeepSeek Harness折腾与简单体验

· 阅读需 3 分钟

DeepSeek官方终于出了自己的Agent工具——DeepSeek Harness(简称dsh),类似与Claude Code、Codex等工具。不同的是,DeepSeek Harness默认是web界面的,而不是TUI或GUI。它强调一切皆插件,这边简单体验了下,感觉还不错,简单记录下折腾的过程。

安装与启动​

全局安装:

npm install -g @deepseek-ai/dsh@latest

启动 Web 界面:

dsh web

在本地部署大模型,顺便感慨

· 阅读需 5 分钟

前言​

其实早在去年DeepSeek-R1开源那会儿,有朋友就和我聊可以本地部署大模型玩玩。不过那时我对本地部署不太感兴趣,虽然我知道可以用Ollama部署,但没有付诸实践,因为我觉得本地只能部署一些参数量很小的大模型,其能力较满血版差多了,直接用API调用简单又方便,何必费那个劲呢?

现在看来,这理由没错,但是也不全对。我当时可能不只是拒绝尝试本地部署这件事,而是变得不想折腾的感觉。毕竟工作比较忙,没多少时间折腾,渐渐地就开始用是否值得、有没有意义等理由来衡量一切,而与折腾的初心渐行渐远。

所以这篇博客,本来去年就可以有的,现在补上,既是技术记录,也是响应下喜欢折腾的初心。