chicken-hackers
[Top][All Lists]
Advanced

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

Re: [Chicken-hackers] [PATCH] Restore row and column counting for ports


From: Jim Ursetto
Subject: Re: [Chicken-hackers] [PATCH] Restore row and column counting for ports (fixes #978)
Date: Sat, 16 Feb 2013 14:14:22 -0600

On Feb 16, 2013, at 8:54, Peter Bex <address@hidden> wrote:

> Just removing the port position bookkeeping altogether is better, I
> think.  I haven't done any benchmarks but Chicken's notoriously awful
> I/O performance might partially be due to the port position bookkeeping.

I seriously doubt that; it's more likely all the indirection (and Scheme code) 
that happens for each character when you call read-char.  read-string and 
read-line are not subject to this as they read chunks at a time in C.  (And now 
that read-line reads into a static buffer it is very fast, not quite at Perl 
speed.)

It is worth a shot to bench it though just to prove it.

Note that custom ports don't expose all functionality (like read-line) and so 
they will be abysmally slow unless you implement one using the non-public API, 
and even then, the underlying code like read-string should still be written in 
C instead of repeatedly calling read-char, or performance will be completely 
unacceptable.  And maintaining this nearly duplicate code would be very 
annoying.

In my opinion a better solution would be to have the compiler figure out when 
it is dealing with a file port etc. and inline the code to read-char (e.g. 
getc) based on the port type.  It seems like this should be doable in the flow 
analysis pass, but I don't know for sure. 

Jim


reply via email to

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