[mew-dist 27252] Re: slow encryption in mew-5.1.50

Tatsuya Kinoshita tats at example.com
2006年 8月 24日 (木) 20:08:47 JST


On August 24, 2006, [mew-dist 27241],
kazu (at iij.ad.jp) wrote:

> > Mew 5.1.50リリース以降、`C-c C-b' (sign and encrypt)の動作がとても
> > 遅くなってしまっています。
> 
> 僕の環境では、PGP でも S/MIME でも、さくっと作成できます。
> 
> 対象としているのは、単純なテキストですか?

いいえ、バイナリファイルを数MB添付して、PGP (GnuPG 1.4.5)を使った
場合です。

例として挙げたとおり、mew-5.1.tar.gz (926KB)とmew-4.2.tar.gz
(903KB)の計2MB弱となるファイルを添付した場合には、30秒以上かかります。
もっと大きなファイルだと、もっとかかります。

mew-encode.el (mew-save-transfer-form)での下記の変更を元に戻すと、
1〜2秒程度で済むようになりました。

----
@@ -869,13 +894,20 @@
 	  (mew-erase-buffer)
 	  (mew-insert-buffer-substring draft-buf beg end)
 	  (setq sbeg (point-min) send (point-max))))
-    (unless mew-cs-text-for-net
-      (goto-char sbeg) ;; just in case
-      (mew-lf-to-crlf)
-      (setq send (point-max)))
+    (goto-char sbeg) ;; just in case
+    (if (and cte (mew-case-equal cte mew-bin)
+	     (re-search-forward mew-eoh))
+	(progn
+	  (forward-line)
+	  (save-restriction
+	    (narrow-to-region sbeg (point))
+	    (goto-char sbeg)
+	    (mew-lf-to-crlf)))
+      (mew-lf-to-crlf))
+    (setq send (point-max))
     (setq file (mew-make-temp-name))
     (mew-frwlet
-     mew-cs-dummy mew-cs-text-for-net
+     mew-cs-dummy mew-cs-binary
      (write-region sbeg send file nil 'no-msg))
     (if retain
 	(mew-remove-buffer tmpbuf)
----

ちなみに環境はDebianのLinux 2.6.17, glibc 2.3.6で、Emacs 22.0.50
(2006-08-17)で約30秒、Emacs 21.4で約2分、と大幅な速度低下が見られます。
XEmacs 21.4.19では、速度低下は数秒程度に留まっています。

-- 
木下達也



Mew-dist メーリングリストの案内