高三啦,趁平时休息的时候把common lisp的who html生成库搬进了emacs~
似乎也没有什么用处呢,可能只是想写点代码调剂心情吧。算是游戏性质的工作呢
有什么不完善的地方可以告诉我,谢谢啦w
这半年来真的发生太多、太多事情了,连玩电脑都不积极了呢 祝大家都开心~
高三啦,趁平时休息的时候把common lisp的who html生成库搬进了emacs~
似乎也没有什么用处呢,可能只是想写点代码调剂心情吧。算是游戏性质的工作呢
有什么不完善的地方可以告诉我,谢谢啦w
这半年来真的发生太多、太多事情了,连玩电脑都不积极了呢 祝大家都开心~
现在的年轻人真的强。
厉害啊,我高考完才去申请了自己的第一个QQ账号。
年轻有为。
谢谢大家夸奖,不是什么了不起的事情呢
爱你们
太可怕了,感觉楼主 elisp 用得比我溜
看楼主代码里有很多这样的东西
(cl-declare (optimize speed space))
之前从未见过,读了下手册,是不是应该写成这样才对?
(cl-declare (optimize (speed 3)))
elisp 应该也不认 space
:
Common Lisp defines several optimization “qualities”; this package ignores all but
speed
andsafety
.
(来自 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: 是我测试方法有问题 相当于用没有 native comp 和有 native comp 的结果对比了,其实级别 2 和 3 基本没什么区别。
谢谢建议!我很菜的啦,都是edicl大佬原库写得好(///.///)
保留space是因为这个就是cl源码的优化选项,看manual说它似乎是会自动忽略过去的?不过speed 3效果竟然这么强的嘛,看来我要去改一改了呢
manual那里说的也不清不楚的,似乎用在declaim和declare上还不一样(… cl里declare可是大杀器,用得好分分钟效率提升几百倍呢
总之谢谢前辈!辛苦啦~
似乎用在declaim和declare上还不一样
区别应该只是 declare
是针对一个函数,declaim
是针对一个文件。
cl里declare可是大杀器,用得好分分钟效率提升几百倍呢
只能说 elisp 太慢了