Subject: bug#20154: 25.0.50; json-encode-string is too slow for large strings

From: Dmitry Gutov <[email-masked]>
Date: Fri, 20 Mar 2015 18:52:26 +0200

On 03/20/2015 06:44 PM, Eli Zaretskii wrote:

> To see how much of the time is taken by json-encode-char, replace it
> with something trivial, like 1+, and see what speedup you get.

Yep. Replacing the second definition with

(defun json-encode-big-string (str)
   (with-temp-buffer
     (insert str)
     (goto-char (point-min))
     (while (re-search-forward "[\"\\/\b\f\b\r\t]\\|[^ -~]" nil t)
       (replace-match "z" t t))
     (format "\"%s\"" (buffer-string))))

still makes it take ~100ms on the example string (as opposed to 2ms in 
the optimized Python implementation).