[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: String algorithm
- From: "Mark Meijer" <meijer78@...>
- Date: Thu, 25 Jan 2007 13:25:48 +0000
Hi all,
I remember finding an algorithm on the lua wiki a couple of years ago, that
dealt with reading a text file one line at a time (or one word at a time, in
any case piece by piece) and concatenating all the pieces into a single
string. The algorithm was meant to prevent numerous copying of the string in
memory, which would occur using a straightforward approach such as the
following:
for line in file:lines() do
mytext = mytext .. line;
end
The above approach would be unacceptably inefficient when dealing with large
input files, because with each iteration the entire contents of the variable
mytext would be duplicated into a new memory location.
I've been trying to find the algorithm again (already 7 months ago, and now
again) but for the life of me I can't find it anywhere. I don't remember
exactly how it goes, but I believe it entails storing the string pieces into
a table (possibly a regular array) and selectively concatenating some
pieces, based on their size relative to other pieces in the table. The newly
formed string would be placed back into the table. This process continues
until only one string remains in the table, which represents the whole file
read into that string.
That's about as much as I remember of it. Plus, I found it briljant in its
simplicity and in how it drastically reduced the effective amount of
duplications needed (if I remember correctly, it would effectively duplicate
the entire length of data only once or twice, but I could be wrong here).
Obviously it was not simple enough for me to remember it :P but if any of
you have any idea what I'm talking about, I'd really like to hear it.
Thanks!
Regards,
Mark
_________________________________________________________________
Talk with your online friends with Messenger
http://www.join.msn.com/messenger/overview