把CL的who html生成库搬进了emacs

高三啦,趁平时休息的时候把common lisp的who html生成库搬进了emacs~

似乎也没有什么用处呢,可能只是想写点代码调剂心情吧。算是游戏性质的工作呢

有什么不完善的地方可以告诉我,谢谢啦w

这半年来真的发生太多、太多事情了,连玩电脑都不积极了呢 :face_with_hand_over_mouth: 祝大家都开心~

6 个赞

现在的年轻人真的强。

3 个赞

厉害啊,我高考完才去申请了自己的第一个QQ账号。

年轻有为。

2 个赞

谢谢大家夸奖,不是什么了不起的事情呢

爱你们 :heart:

太可怕了,感觉楼主 elisp 用得比我溜 :rofl:

看楼主代码里有很多这样的东西

(cl-declare (optimize speed space))

之前从未见过,读了下手册,是不是应该写成这样才对?

(cl-declare (optimize (speed 3)))

elisp 应该也不认 space

Common Lisp defines several optimization “qualities”; this package ignores all but speed and safety.

(来自 info node cl > Declarations

继续研究了一下,发现 cl-declare 声明的优化级别是针对 byte compiler 而言的;elisp 自己的 declare 则可以针对 native comp 设置优化级别:

(speed N): Specify the value of ‘native-comp-speed’ in effect for native compilation of this function

(来自 info node elisp > Functions > Declare Form

尝试在 citre 的几个要紧的函数里加了 (declare (speed 3))性能提高不少

(benchmark-run 100
  (citre-readtags-get-tags "~/.emacs.d/straight/repos/citre/.tags" ""
                           :parse-all-fields t))
;; 默认优化级别(2)结果为 0.67s
;; 优化级别 3 结果为 0.31s

Update: 是我测试方法有问题 :rofl: 相当于用没有 native comp 和有 native comp 的结果对比了,其实级别 2 和 3 基本没什么区别。

1 个赞

谢谢建议!我很菜的啦,都是edicl大佬原库写得好(///.///)

保留space是因为这个就是cl源码的优化选项,看manual说它似乎是会自动忽略过去的?不过speed 3效果竟然这么强的嘛,看来我要去改一改了呢

manual那里说的也不清不楚的,似乎用在declaim和declare上还不一样(… cl里declare可是大杀器,用得好分分钟效率提升几百倍呢

总之谢谢前辈!辛苦啦~

1 个赞

似乎用在declaim和declare上还不一样

区别应该只是 declare 是针对一个函数,declaim 是针对一个文件。

cl里declare可是大杀器,用得好分分钟效率提升几百倍呢

只能说 elisp 太慢了 :rofl:

1 个赞