unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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).