[PATCH] Fix Unicode handling in :INVERT readtable and :CASE :COMMON pathnames

Vladimir Sedach vas at oneofus.la
Tue May 5 02:46:42 UTC 2020


Ok, I figured out a fix (attached).

write_symbol_string was attempting to use some kind of buffering
similar to writestr_stream in file.d, which buffering I replaced with
calls to ecl_write_char.

This simplified the code, and does not seem to have had a noticeable
negative effect on the performance of printing symbols:

--8<---------------cut here---------------start------------->8---
> (defvar j (read-from-string "абракадабра"))

J
> (time (dotimes (i 1000000) (with-output-to-string (x1) (print j x1))))
--8<---------------cut here---------------end--------------->8---

Before:

real time : 5.349 secs
run time  : 6.827 secs
gc count  : 552 times
consed    : 1055997968 bytes
NIL

After:

real time : 5.278 secs
run time  : 7.756 secs
gc count  : 257 times
consed    : 1039999200 bytes
NIL

--
Vladimir Sedach
Software engineering services in Los Angeles https://oneofus.la

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-write_symbol.d-Fix-printing-of-Unicode-symbol-names.patch
Type: text/x-diff
Size: 3661 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20200504/b59846d6/attachment.patch>


More information about the ecl-devel mailing list