What is a faster way to extract lots of data from a big file?

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Im making a console application where i get a KML file (unzipped KMZ file) and I need to extract data from it. Below is a tryout, but it takes more than 15 minutes to get through the 3+ MB text.
Infomation about the code:
Tags is an array with the strings that are between the data I need.
Velden is an array where I temporarily keep the data I extracted.
When I got all the data from 1 ship, I put it in a Ship-object and my ShipsDBhandler inserts it into the db.

<div style="color:Black;background-color:White; <pre>
<span style="color:Blue; string[] tags = { <br/>
<span style="color:#A31515; "Last seen at</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Name</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>MMSI</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Callsign</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>IMO</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Type</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Navstat</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Dest</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Eta (dd-mm hh:mm)</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Position</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Speed</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Course</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Heading</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Length</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Width</td><td>",<br/>
<span style="color:#A31515; "</td></tr><tr><td>Draught</td><td>",<br/>
<span style="color:#A31515; "</td></tr></table>"<br/>
};<br/>
<span style="color:Blue; string[] velden = <span style="color:Blue; new <span style="color:Blue; string[16];<br/>
ShipsDBHandler sdbh = <span style="color:Blue; new ShipsDBHandler();<br/>
DateTime start = DateTime.Now;<br/>
Console.WriteLine(start);<br/>
<span style="color:Blue; int aantal = 0;<br/>
<span style="color:Blue; while (inhoud.Length > 0)<br/>
{<br/>
<br/>
<span style="color:Blue; for (<span style="color:Blue; int teller = 0; teller < 16; teller++)<br/>
{<br/>
<span style="color:Blue; try<br/>
{<br/>
inhoud = inhoud.Substring(inhoud.IndexOf(tags[teller]) + tags[teller].Length);<br/>
velden[teller] = inhoud.Substring(0, inhoud.IndexOf(tags[teller + 1]));<br/>
}<br/>
<span style="color:Blue; catch<br/>
{<br/>
inhoud = <span style="color:Blue; string.Empty;<br/>
<span style="color:Blue; break;<br/>
}<br/>
}<br/>
<span style="color:Blue; string lat = velden[9].Substring(0, velden[9].IndexOf(<span style="color:#A31515; "/") - 1);<br/>
<span style="color:Blue; string lon = velden[9].Substring(velden[9].IndexOf(<span style="color:#A31515; "/") + 2, velden[9].Length - (velden[9].IndexOf(<span style="color:#A31515; "/") + 2));<br/>
Ship ship = <span style="color:Blue; new Ship(velden[4], velden[2], velden[1], velden[5], velden[6], velden[0], lat, lon, velden[11], velden[10]);<br/>
sdbh.InsertIntoDB(ship);<br/>
aantal++;<br/>
}
[/code]
Any idea how I can make this faster?



View the full article
 
Back
Top