感觉 elisp 在性能上还是和 js 有比较大的差距。如果按照 js 的库一比一的 port 的话,性能惨不忍睹。js 在字符串处理上性能相当好。
elisp 里面尽量利用 buffer 里面的内容也还是差一大截。
感觉 elisp 在性能上还是和 js 有比较大的差距。如果按照 js 的库一比一的 port 的话,性能惨不忍睹。js 在字符串处理上性能相当好。
elisp 里面尽量利用 buffer 里面的内容也还是差一大截。
elisp性能和Python(CPython implementation)大概同一级
按理说字符串上大家都是用utf-8,应该差不多。主要还是运行速度的差距。
Emacs 26.1 以及之前的 pcase
用的是 eq
,不知道后来怎么就改成 eql
了,好像 NEWS 也没有解释
~ $ emacs-26.1 -Q --batch --eval "(print (macroexpand '(pcase 1 (1 t))))"
(if (eq 1 1) (progn t) nil)
~ $ emacs -Q --batch --eval "(print (macroexpand '(pcase 1 (1 t))))"
(if (eql 1 1) (progn t) nil)
parinfer 原本的逻辑是一个大字符串来处理的,在 emacs 里面如果把 buffer 里的字符串拿出来,好像做什么性能都不是太好。也可能我写的不好,但是那样比我现在这样的方式要差至少几十倍。
在学Elisp, 想请大神帮忙解释一下 (declare (indent 1) (debug cl-case))
里面(debug cl-case)
怎么解释, 有什么用处? 看文档在第18章完全不懂 。
我说的是性能问题.
你想表达的是啥?
说的就是性能问题,你以为是啥?
一坨面条代码还要啥性能?
我说的是性能问题,你这句的意思是 elisp 不需要性能?那这问题你回复我干嘛,我又不是在说 elisp 需要不需要性能。
你也不能撸的和js 一样烂啊
我只看到你在发泄情绪,还特意找个人来做发泄对象,真不幸我被选中了。
已经禁言一周,如果不能帮助别人,不要无故攻击别人。
今天尝试了一下用 cl-case
来判断系统类型,用 cl-loop
来配置中文字体。发现这个两个速度确实比较慢。
windows 平台上,cl-case
比用 eq
慢了 0.03s, cl-loop 比 用 dolist 慢了 0.06s
Mac 平台上差异也稍微慢一点,但差异没那么明显。
(defvar font-list
(cl-case system-type
(darwin
'(("SF Mono" . 130) ("Monaco" . 130) ("Menlo" . 130)))
(windows-nt
'(("SF Mono" . 110) ("Consolas" . 120) ("Cascadia Mono" . 110)))
(gnu/linux
'(("SF Mono" . 110) ("Consolas" . 120) ("Cascadia Mono" . 110))))
"List of fonts and sizes. The first one available will be used.")
(defun font-installed-p (font-name)
"Check if font with FONT-NAME is available."
(find-font (font-spec :name font-name)))
(defun change-font ()
"Set English font from the `font-list'."
(interactive)
(let* (available-fonts font-name font-size)
(dolist (font font-list
(setq available-fonts (nreverse available-fonts)))
(when (font-installed-p (car font))
(push font available-fonts)))
(if (not available-fonts)
(message "No fonts from the chosen set are available")
(if (called-interactively-p 'interactive)
(let* ((chosen (assoc-string
(completing-read "What font to use? "
available-fonts nil t)
available-fonts)))
(setq font-name (car chosen)
font-size (read-number "Font size: " (cdr chosen))))
(setq font-name (caar available-fonts)
font-size (cdar available-fonts)))
(set-face-attribute 'default nil :font font-name :height font-size))))
(when (display-graphic-p)
;; Set default font
(change-font)
;; Specify font for all unicode characters
(cl-loop for font in '("Apple Color Emoji" "Segoe UI Symbol" "Noto Color Emoji" "Symbola")
when (font-installed-p font)
return (set-fontset-font t 'unicode font nil 'prepend))
;; Specify font for Chinese characters
(cl-loop for font in '("Microsoft Yahei" "Hiragino Sans GB" "Noto Sans Mono CJK SC")
when (font-installed-p font)
return (set-fontset-font t '(#x4e00 . #x9fff) font)))