* bug#4771: 23.1; slow to interpret anthy maps
@ 2009-10-21 3:42 Ryo Furue
2011-09-18 9:01 ` Lars Magne Ingebrigtsen
2011-09-19 19:56 ` Stefan Monnier
0 siblings, 2 replies; 4+ messages in thread
From: Ryo Furue @ 2009-10-21 3:42 UTC (permalink / raw)
To: bug-gnu-emacs
[-- Attachment #1: Type: Text/Plain, Size: 4493 bytes --]
Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.
Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,
and to the gnu.emacs.bug news group.
Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:
emacs23 is much slower to interpret the attached elisp file
than emacs22. The file customizes the conversion table from
alphabets to Japanese characters. It's for the anthy-el
package (I think).
Here's a little quantitative comparison:
$ time /usr/bin/emacs23 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
real 0m8.293s
user 0m1.244s
sys 0m0.036s
$ time /usr/bin/emacs22 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
real 0m1.197s
user 0m0.164s
sys 0m0.040s
I repeated each experiment four times. The above shows the second
slowest result from each. (The 2nd through 4th runs aren't
very different. The first run of the emacs22 experiment was a bit
slower probably because emacs22 wasn't loaded in the memory cache.)
Best regards,
Ryo
If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
`bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/share/emacs/23.1/etc/DEBUG for instructions.
In GNU Emacs 23.1.1 (i486-pc-linux-gnu, GTK+ Version 2.16.5)
of 2009-09-13 on raven, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.10603901
configured using `configure '--build=i486-linux-gnu' '--host=i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.1/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.1/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: nil
value of $XMODIFIERS: nil
locale-coding-system: nil
default-enable-multibyte-characters: t
Major mode: Emacs-Lisp
Minor modes in effect:
show-paren-mode: t
tooltip-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
C-p C-e C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b
C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b
C-b C-b C-b C-b C-b C-b C-b C-f C-f C-d C-d C-d m o
s t C-n SPC a s SPC t h e SPC E U C SPC u p SPC u n
i t l SPC t h e SPC e a s t e r n SPC b o u n d a r
y . C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b
C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b C-b
C-d C-f i C-a C-x C-s C-x C-q <help-echo> C-x o i C-p
SPC C-x 1 C-p SPC C-n SPC SPC d x g f e r r e t <return>
s <return> C-p SPC <help-echo> C-x o C-x o i SPC C-x
o C-n C-n C-n C-n C-n C-n C-n C-SPC C-e C-w <help-echo>
C-x o i SPC C-p SPC o c h r o m e <return> y o <return>
x g f e r r e t <return> s <return> C-p SPC i SPC .
SPC d x C-p C-p SPC <help-echo> <down-mouse-1> <mouse-1>
C-x C-b <return> C-x C-f C-a C-f C-f C-k . e m a c
s 2 3 TAB <return> C-x C-q C-x C-q C-x 1 C-p C-p C-p
C-r r e C-n C-n C-n C-s a n t h y C-a <help-echo> <down-mouse-1>
<mouse-1> <escape> x b u g TAB C-b C-b C-b C-b C-b
C-b C-b C-b C-b C-b C-b C-b C-b C-b C-k e m a c s -
b u TAB C-h C-h C-h C-h C-h C-h C-h C-h r e p o r TAB
TAB b u g <return>
Recent messages:
Scanning +ferret...done
Scanning +inbox...done
Too large, truncated. To see the entire message, type '.'
Wrapped lines
No more messages
Refiling and deleting...done
Updating buffer list...done
Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help
Mark saved where search started [2 times]
Making completion list...
[-- Attachment #2: anthy-el-my.el --]
[-- Type: Text/Plain, Size: 8271 bytes --]
; Customize anthy-el .
; See /usr/share/anthy/ELISP .
; ローマ字入力中にバックスペースを押すと文字単位ではなくローマ字を消す.
; たとえば「か」でバックスペースを押すと「k」が残る
;(anthy-set-break-into-roman 't)
(setq anthy-wide-space " ")
; Customize the romaji table of anthy-el .
; The corresponding customization for scim-anthy is
; in ~/.scim/Anthy/config.sty .
;
(anthy-change-hiragana-map "ti" "てぃ")
(anthy-change-hiragana-map "tu" "とぅ")
(anthy-change-hiragana-map "di" "でぃ")
(anthy-change-hiragana-map "du" "どぅ")
(anthy-change-hiragana-map "tsa" "つぁ")
(anthy-change-hiragana-map "tsi" "つぃ")
(anthy-change-hiragana-map "tse" "つぇ")
(anthy-change-hiragana-map "tso" "つぉ")
(anthy-change-hiragana-map "dzu" "づ")
(anthy-change-hiragana-map "dja" "ぢゃ")
(anthy-change-hiragana-map "dji" "ぢ")
(anthy-change-hiragana-map "dju" "ぢゅ")
(anthy-change-hiragana-map "dje" "ぢぇ")
(anthy-change-hiragana-map "djo" "ぢょ")
; その他のローマ字かな変換
(anthy-change-hiragana-map "z1" "○")
(anthy-change-hiragana-map "z!" "●")
(anthy-change-hiragana-map "z2" "▽")
(anthy-change-hiragana-map "z@" "▼")
(anthy-change-hiragana-map "z3" "△")
(anthy-change-hiragana-map "z#" "▲")
(anthy-change-hiragana-map "z4" "□")
(anthy-change-hiragana-map "z$" "■")
(anthy-change-hiragana-map "z5" "◇")
(anthy-change-hiragana-map "z%" "◆")
(anthy-change-hiragana-map "z6" "☆")
(anthy-change-hiragana-map "z^" "★")
(anthy-change-hiragana-map "z7" "◎")
(anthy-change-hiragana-map "z%" "£")
(anthy-change-hiragana-map "z8" "¢")
(anthy-change-hiragana-map "z*" "×")
(anthy-change-hiragana-map "z9" "♂")
(anthy-change-hiragana-map "z(" "【")
(anthy-change-hiragana-map "z0" "♀")
(anthy-change-hiragana-map "z)" "】")
(anthy-change-hiragana-map "z-" "〜")
(anthy-change-hiragana-map "z_" "∴")
(anthy-change-hiragana-map "z=" "≠")
(anthy-change-hiragana-map "z+" "±")
(anthy-change-hiragana-map "z\\" "\")
(anthy-change-hiragana-map "z|" "‖")
(anthy-change-hiragana-map "z`" "`")
(anthy-change-hiragana-map "z~" "¨")
(anthy-change-hiragana-map "zq" "《")
(anthy-change-hiragana-map "zQ" "〈")
(anthy-change-hiragana-map "zw" "》")
(anthy-change-hiragana-map "zW" "〉")
(anthy-change-hiragana-map "zr" "々")
(anthy-change-hiragana-map "zR" "仝")
(anthy-change-hiragana-map "zt" "〆")
(anthy-change-hiragana-map "zT" "§")
(anthy-change-hiragana-map "zp" "〒")
(anthy-change-hiragana-map "zP" "↑")
(anthy-change-hiragana-map "z[" "『")
(anthy-change-hiragana-map "z{" "〔")
(anthy-change-hiragana-map "z]" "』")
(anthy-change-hiragana-map "z}" "〕")
(anthy-change-hiragana-map "zs" "ヽ")
(anthy-change-hiragana-map "zS" "ヾ")
(anthy-change-hiragana-map "zd" "ゝ")
(anthy-change-hiragana-map "zD" "ゞ")
(anthy-change-hiragana-map "zf" "〃")
(anthy-change-hiragana-map "zF" "→")
(anthy-change-hiragana-map "zg" "‐")
(anthy-change-hiragana-map "zG" "―")
(anthy-change-hiragana-map "zh" "←")
(anthy-change-hiragana-map "zj" "↓")
(anthy-change-hiragana-map "zk" "↑")
(anthy-change-hiragana-map "zl" "→")
(anthy-change-hiragana-map "z;" "゛")
(anthy-change-hiragana-map "z:" "゜")
(anthy-change-hiragana-map "z\'" "‘")
(anthy-change-hiragana-map "z\"" "“")
(anthy-change-hiragana-map "zx" ":-")
(anthy-change-hiragana-map "zX" ":-)")
(anthy-change-hiragana-map "zc" "〇")
(anthy-change-hiragana-map "zC" "℃")
(anthy-change-hiragana-map "zv" "※")
(anthy-change-hiragana-map "zV" "÷")
(anthy-change-hiragana-map "zb" "°")
(anthy-change-hiragana-map "zB" "←")
(anthy-change-hiragana-map "zn" "′")
(anthy-change-hiragana-map "zN" "↓")
(anthy-change-hiragana-map "zm" "〃")
(anthy-change-hiragana-map "zM" "〓")
(anthy-change-hiragana-map "z," "‥")
(anthy-change-hiragana-map "z<" "≦")
(anthy-change-hiragana-map "z." "…")
(anthy-change-hiragana-map "z>" "≧")
(anthy-change-hiragana-map "z/" "・")
(anthy-change-hiragana-map "z?" "∞")
(anthy-change-hiragana-map "Z0" "0")
(anthy-change-hiragana-map "Z1" "1")
(anthy-change-hiragana-map "Z2" "2")
(anthy-change-hiragana-map "Z3" "3")
(anthy-change-hiragana-map "Z4" "4")
(anthy-change-hiragana-map "Z5" "5")
(anthy-change-hiragana-map "Z6" "6")
(anthy-change-hiragana-map "Z7" "7")
(anthy-change-hiragana-map "Z8" "8")
(anthy-change-hiragana-map "Z9" "9")
(anthy-change-hiragana-map "Za" "a")
(anthy-change-hiragana-map "Zb" "b")
(anthy-change-hiragana-map "Zc" "c")
(anthy-change-hiragana-map "Zd" "d")
(anthy-change-hiragana-map "Ze" "e")
(anthy-change-hiragana-map "Zf" "f")
(anthy-change-hiragana-map "Zg" "g")
(anthy-change-hiragana-map "Zh" "h")
(anthy-change-hiragana-map "Zi" "i")
(anthy-change-hiragana-map "Zj" "j")
(anthy-change-hiragana-map "Zk" "k")
(anthy-change-hiragana-map "Zl" "l")
(anthy-change-hiragana-map "Zm" "m")
(anthy-change-hiragana-map "Zn" "n")
(anthy-change-hiragana-map "Zo" "o")
(anthy-change-hiragana-map "Zp" "p")
(anthy-change-hiragana-map "Zq" "q")
(anthy-change-hiragana-map "Zr" "r")
(anthy-change-hiragana-map "Zs" "s")
(anthy-change-hiragana-map "Zt" "t")
(anthy-change-hiragana-map "Zu" "u")
(anthy-change-hiragana-map "Zv" "v")
(anthy-change-hiragana-map "Zw" "w")
(anthy-change-hiragana-map "Zx" "x")
(anthy-change-hiragana-map "Zy" "y")
(anthy-change-hiragana-map "Zz" "z")
(anthy-change-hiragana-map "ZA" "A")
(anthy-change-hiragana-map "ZB" "B")
(anthy-change-hiragana-map "ZC" "C")
(anthy-change-hiragana-map "ZD" "D")
(anthy-change-hiragana-map "ZE" "E")
(anthy-change-hiragana-map "ZF" "F")
(anthy-change-hiragana-map "ZG" "G")
(anthy-change-hiragana-map "ZH" "H")
(anthy-change-hiragana-map "ZI" "I")
(anthy-change-hiragana-map "ZJ" "J")
(anthy-change-hiragana-map "ZK" "K")
(anthy-change-hiragana-map "ZL" "L")
(anthy-change-hiragana-map "ZM" "M")
(anthy-change-hiragana-map "ZN" "N")
(anthy-change-hiragana-map "ZO" "O")
(anthy-change-hiragana-map "ZP" "P")
(anthy-change-hiragana-map "ZQ" "Q")
(anthy-change-hiragana-map "ZR" "R")
(anthy-change-hiragana-map "ZS" "S")
(anthy-change-hiragana-map "ZT" "T")
(anthy-change-hiragana-map "ZU" "U")
(anthy-change-hiragana-map "ZV" "V")
(anthy-change-hiragana-map "ZW" "W")
(anthy-change-hiragana-map "ZX" "X")
(anthy-change-hiragana-map "ZY" "Y")
(anthy-change-hiragana-map "ZZ" "Z")
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#4771: 23.1; slow to interpret anthy maps
2009-10-21 3:42 bug#4771: 23.1; slow to interpret anthy maps Ryo Furue
@ 2011-09-18 9:01 ` Lars Magne Ingebrigtsen
2011-09-19 19:56 ` Stefan Monnier
1 sibling, 0 replies; 4+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-09-18 9:01 UTC (permalink / raw)
To: Ryo Furue; +Cc: 4771
Ryo Furue <furue@hawaii.edu> writes:
> emacs23 is much slower to interpret the attached elisp file
> than emacs22. The file customizes the conversion table from
> alphabets to Japanese characters. It's for the anthy-el
> package (I think).
>
> Here's a little quantitative comparison:
>
> $ time /usr/bin/emacs23 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
> real 0m8.293s
> user 0m1.244s
> sys 0m0.036s
> $ time /usr/bin/emacs22 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
> real 0m1.197s
> user 0m0.164s
> sys 0m0.040s
I can confirm that this problem still exists in Emacs 24:
[larsi@stories ~]$ time emacs -Q --eval '(progn (load-library "cl") (push "/usr/share/emacs23/site-lisp/anthy" load-path) (load-library "anthy") (load "/tmp/anthy-el-my.el") (kill-emacs))'
real 0m8.037s
user 0m0.362s
sys 0m0.051s
However, is this a problem with the third-party anthy library, or in
Emacs?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#4771: 23.1; slow to interpret anthy maps
2009-10-21 3:42 bug#4771: 23.1; slow to interpret anthy maps Ryo Furue
2011-09-18 9:01 ` Lars Magne Ingebrigtsen
@ 2011-09-19 19:56 ` Stefan Monnier
2011-09-21 16:32 ` Lars Magne Ingebrigtsen
1 sibling, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2011-09-19 19:56 UTC (permalink / raw)
To: Ryo Furue; +Cc: 4771-done
> $ time /usr/bin/emacs23 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
> real 0m8.293s
> user 0m1.244s
> sys 0m0.036s
> $ time /usr/bin/emacs22 -q --eval '(progn (load-library "anthy") (load "~/lib/emacs/anthy-el-my.el")(kill-emacs))'
> real 0m1.197s
> user 0m0.164s
> sys 0m0.040s
AFAICT, anthy-el-my.el mostly calls functions which send some text to
a sub-process and then wait for an answer. It appears from the above
measurement, then that a large part of the time is spent waiting (see
the difference between `real' time and `user' time).
In the current anthy.el I see the following core communication function:
(defun anthy-do-send-recv-command (cmd)
(if (not anthy-agent-process)
(anthy-check-agent))
(let ((old-buffer (current-buffer)))
(unwind-protect
(progn
(set-buffer anthy-working-buffer)
(erase-buffer)
(process-send-string anthy-agent-process cmd)
(while (= (buffer-size) 0)
(accept-process-output nil 0 anthy-accept-timeout))
(read (buffer-string)))
(set-buffer old-buffer))))
as well as the following initialization:
(defvar anthy-accept-timeout 50)
(if (string-match "^22\." emacs-version)
(setq anthy-accept-timeout 1))
So could it simply be that accept-process-output always waits the
full timeout? There are 152 calls to anthy-change-hiragana-map in
anthy-el-my.el.
So in Emacs-22 this would result in about 152 * 1ms = 152ms
of wasted waiting time (negligible) whereas with any other version you'd
get about 152 * 50ms = 7.5s of wasted waiting time.
So I think the problem is in anthy.el.
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#4771: 23.1; slow to interpret anthy maps
2011-09-19 19:56 ` Stefan Monnier
@ 2011-09-21 16:32 ` Lars Magne Ingebrigtsen
0 siblings, 0 replies; 4+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-09-21 16:32 UTC (permalink / raw)
To: 4771
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> So I think the problem is in anthy.el.
Right. So I'm closing this report.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-09-21 16:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-21 3:42 bug#4771: 23.1; slow to interpret anthy maps Ryo Furue
2011-09-18 9:01 ` Lars Magne Ingebrigtsen
2011-09-19 19:56 ` Stefan Monnier
2011-09-21 16:32 ` Lars Magne Ingebrigtsen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).