If the templates don't change often, but are used somewhat more often, then
it might be worth pre-processing them: that is parse them initially, and
spit them out in parts with a directive file. Then you simply read the
directive file and stitch the parts together.

Eg:
Long text <%=placeholder1 %> more text <%=someotherplaceholder%> even more
text

Would be preprocessed into 3 files and one directive file. The directive
file would just list the parts and placeholder sequence: eg:

<parts>
   <part @index=0 @type=file>file1.txt</part>
   <part @index=0 @type=replacement>placeholder1</part>
  <part @index=0 @type=file>file2.txt</part>
   <part @index=0 @type=replacement> someotherplaceholder</part>  
<part @index=0 @type=file>file3.txt</part>
</parts>

This would save you re-parsing the templates.  Whether or not it is worth
the effort in your case is something you'd have to decide on. I wouldn't
bother unless initial performance and/or you are doing a lot of re-use of
the templates.

As to using a asp.net style parser, it's a possibility, but probably not
worth the overhead or time it would take to investigate another engine.



|-----Original Message-----
|From: ozdotnet-boun...@ozdotnet.com [mailto:ozdotnet-
|boun...@ozdotnet.com] On Behalf Of Bec Carter
|Sent: Monday, 7 February 2011 1:42 PM
|To: ozDotNet
|Subject: Re: Placeholders in large text file
|
|On Mon, Feb 7, 2011 at 1:33 PM, Michael Minutillo
|<michael.minuti...@gmail.com> wrote:
|> Well, if the template size isn't going change and this is the only app
|> running on the machine then so be it. Chances are good that neither of
|> those things is true. I'd still err on the side of having a single
|> line memory at a time because it's not like the optimization is making
|> it any harder to read or understand.
|>
|
|Yup template file will mostly likely not change and app will always run
locally
|as an exe. This sort of optimisation you suggested seems good enough to use
as
|it is fairly simple.
|
|...But I was kinda questioning the design of doing things this way at all.
It seems
|like what I want is a dynamic "page" (like a webform) that can run and spit
out
|text just like an asp page does.....so the placeholders would really be <%=
%>
|tags. Is something like this an option? Can I somehow run an asp.net page
|locally? Will this cause performance problems for 750megs of data which is
|around 70 pages? Am I going completely crazy? :-)
|
|
|> Michael M. Minutillo
|> Indiscriminate Information Sponge
|> Blog: http://wolfbyte-net.blogspot.com
|>
|>
|> On Mon, Feb 7, 2011 at 10:30 AM, mike smith <meski...@gmail.com> wrote:
|>>
|>> On Mon, Feb 7, 2011 at 12:49 PM, Michael Minutillo
|>> <michael.minuti...@gmail.com> wrote:
|>>>
|>>> If you're in .NET 4.0 land then I'd do something similar to this:
|>>> public string ReplaceTokens(string src) { /* ... */ }
|>>> File.WriteAllLines(outputFileName,
|>>> File.ReadLines(inputFileName).Select(ReplaceTokens));
|>>> The ReadLines call (new to .NET 4.0) reads one line at a time and
|>>> returns it as you iterate over it so in theory you don't need to
|>>> have the whole file in memory. Don't use the ReadAllLines method on
|>>> a 750MB file which DOES read the whole thing in before you start.
|>>>
|>>
|>>
|>> Is that a real problem given physical RAM these days?  If you're
|>> going to write multiple outputs from the one template file of 750
|>> it's going to rapidly get more efficient to have the template in-ram.  
Wait a
|moment.
|>>  You don't work for Readers Digest, do you?  I have no desire
|>> whatever to make them more efficient.
|>> --
|>> Meski
|>>
|>> "Going to Starbucks for coffee is like going to prison for sex. Sure,
|>> you'll get it, but it's going to be rough" - Adam Hills
|>
|>

Reply via email to