Peter Crowther wrote:

From: David Kerber [mailto:[EMAIL PROTECTED] Is there a more efficient "split" method I could use? Or am I completely missing the point of what you are suggesting?

I think you've slightly missed the point. I assume you're calling your function 5 times, each with a different field
Yes.

name that you want out of it.  You're then invoking string handling functions 
on the entire decrypted string 5 times, each time going through the bytes to 
extract the piece you need.  In the process, you traverse bytes you don't need 
several times.  My suggestion is that you tokenise this *once*, and hence only 
pay the string-handling overhead once.  Then you get all the parameters out of 
the same tokenised version.
That is essentially my question: how do I tokenize this more efficiently, without doing the search for the field names? Do you think it be more efficient to scan the string once and grab the field values as I get to each field marker? I can do that no problem.


However, if the next thing you do is to write this to disk, I am even more 
convinced that you're optimising the wrong piece of code as the disk I/O is 
likely to take vastly more instructions than the string parse.

These may be naïve questions, but I'll ask them anyway.  How have you 
identified these two pieces of code as the targets for optimisation?  What 
profiler have you used, under what conditions?  What proportion of your overall 
CPU budget is taken by these two snippets of code?  Is the machine CPU-bound in 
the first place, or is the bottleneck elsewhere?  If these are the worst 
culprits in your app, I'll be very surprised.
Those are good questions, but I've already considered them over the past few weeks as I've been working on this. Yes, the machine is cpu-bound. My 768k data line will spike the cpu to 100% and hold it above 95% until the transmission queues on the other end of the WAN are caught up. I've seen it take up to several hours depending on how long the comms were down. The HD lights are busy, but this machine has a fast RAID system, and watching task manager tells me that the disk subsystem seems to be able to keep up. I haven't run a profiler on this code; I've tried, but getting the configuration figured out has stumped me every time. I picked out these particular routines (and one other I haven't posted) because of the principal that 90% of the cpu time is taken by 10% of the code, and these routines are the only loops in the entire servlet (i.e. the only lines of code which are executed more than once per incoming data line). The servlet itself is quite small, only 431 lines, including comments, declares, initialization, and functional code.

Thanks for your comments...
Dave

                - Peter



---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to