How to do line oriented i/o in constant space?

Klacke <>
Wed Oct 11 10:13:33 CEST 2000


On Mon, Oct 09, 2000 at 03:39:19PM +0100, Sean Hinde wrote:
> > > A middle way would be 
> > > to get binaries and then convert to lists as required.
> > > 
> > 
> > 
> > Possibly.
> 
> So what would be the efficient way to do this?
> 
> Sean


It would be to open a Port to the io channel, receive binary messages from
the Port, and then either use the Bitsyntax or appropriate binary_to_lists's 
to pull the binary object apart.

This is how we typically do socket and file programming  in erlang
today. A similar approach is indeed possible with stdin/stdout 
using the open_port({fd, 0, 1 .... approach.

So the io: routines are nice if a high degree of flexibility
is needed and the performance requirements are low, whereas the
direct port mechanism is better if performance is important.
A nice example where a high degree of flexibility is needed is 
the erlang shell. This was also the first application which used the 
io: routines and ... the io: routines were designed to cope with
the requirements of the shell.

/klacke



-- 
Claes Wikstrom                          <>
Bluetail AB                             http://www.bluetail.com





More information about the erlang-questions mailing list