Re[2]: [flexi-streams-devel] New release 0.11.1

Vodonosov Anton vodonosov at mail.ru
Sun Apr 29 18:43:44 UTC 2007


Hello Edi

> sorry for the delay.  
> ... i'm too busy right now.  

No problem, I'm not hurry.

I have a new version, with better performance (see attached 
diff of output.lisp against 0.11.2).

Results for the same test:

;; original flexi-streams-0.11.2 
;; =============================

(time (time-test :utf-8))
;; Real time: 12.178 sec.
;; Run time: 12.093 sec.
;; Space: 430660 Bytes
;; GC: 1, GC time: 0.015 sec.

(time (time-test :koi8-r))
;; Real time: 0.246 sec.
;; Run time: 0.25 sec.
;; Space: 1820584 Bytes
;; GC: 2, GC time: 0.048 sec.

;; with char-to-octets
;; ===================
 
(time (time-test :utf-8))
;; Real time: 0.328 sec.
;; Run time: 0.328 sec.
;; Space: 1728432 Bytes
;; GC: 2, GC time: 0.047 sec.

(time (time-test :koi8-r))
;; Real time: 0.323 sec.
;; Run time: 0.297 sec.
;; Space: 1728436 Bytes
;; GC: 2, GC time: 0.063 sec.

Surprising is that utf-8 works with almost equal efficiency as 
8-bit encoding. 

I think the difference in performance for 8-bit between this version 
and the original 0.11.2 is caused by two function calls instead of inlined 
character to bytes conversion (CLOS dispatch of CHAR-TO-OCTETS which in 
turn calls OCTET-SINK passed to it).

> I have to think about this a bit more 
> ...
> The win for UTF-8 is impressive, but I'm a bit concerned that
> you'll lose a lot of performance for 8-bit encodings. I think it'd be
> better to leave the 8-bit version in there and only use your code for
> other strings. 

It's up to you. I hope it will be possible to inline code as you do in 0.11.2, 
maybe redefining CHAR-TO-OCTETS methods as macros. 

Maybe I'll try it when I have some spare time.

Regards,
-Anton

-------------- next part --------------
A non-text attachment was scrubbed...
Name: output.lisp.diff
Type: application/octet-stream
Size: 12928 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/flexi-streams-devel/attachments/20070429/de1c2ea2/attachment.obj>


More information about the Flexi-streams-devel mailing list