emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#4771: closed (23.1; slow to interpret anthy maps)


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#4771: closed (23.1; slow to interpret anthy maps)
Date: Mon, 19 Sep 2011 20:03:02 +0000

Your message dated Mon, 19 Sep 2011 15:56:41 -0400
with message-id <address@hidden>
and subject line Re: 23.1; slow to interpret anthy maps
has caused the debbugs.gnu.org bug report #4771,
regarding 23.1; slow to interpret anthy maps
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
4771: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=4771
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 23.1; slow to interpret anthy maps Date: Tue, 20 Oct 2009 17:42:29 -1000 (HST)
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 address@hidden 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...
; 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")

--- End Message ---
--- Begin Message --- Subject: Re: 23.1; slow to interpret anthy maps Date: Mon, 19 Sep 2011 15:56:41 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)
>   $ 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


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]