6ms at command prompt when reading floats vs 123ms with strings
''''''''''''''''' ' USING STRINGS ' ''''''''''''''''' Local fileStream:TStream = ReadStream("c:\test.txt")', True, False) Local myBank:TBank = New TBank Local bankStream:TBankStream = CreateBankStream(myBank) CopyStream(fileStream, bankStream, StreamSize(fileStream)) CloseStream(fileStream) SeekStream(BankStream, 0) Local coord:T3DCoord = New T3DCoord Local floatStream:TStream = WriteStream("c:\testfloat.bin") start=MilliSecs() While Not Eof(bankStream) Local LineofData$ = ReadLine(bankStream) 'Print lineofData$ coord = GetCoords(LineOfData) WriteFloat(floatStream, coord.X) WriteFloat(floatStream, coord.Y) WriteFloat(floatStream, coord.Z) 'Print coord.X+", "+coord.Y+", "+coord.Z FlushMem Wend Print "Time taken: " + (MilliSecs()-start) + "ms when reading strings" CloseStream(floatStream) CloseStream(bankStream) '''''''''''''''' ' USING FLOATS ' '''''''''''''''' Local fFileStream:TStream = ReadStream("c:\testfloat.bin")', True, False) Local fmyBank:TBank = New TBank Local fbankStream:TBankStream = CreateBankStream(fmyBank) CopyStream(ffileStream, fbankStream, StreamSize(ffileStream)) CloseStream(ffileStream) SeekStream(fBankStream, 0) Local fCoord:T3DCoord = New T3DCoord 'Local floatStream:TStream = WriteStream("c:\testfloat.bin") start=MilliSecs() While Not Eof(fbankStream) fCoord.X = ReadFloat(fBankStream) fCoord.Y = ReadFloat(fBankStream) fCoord.Z = ReadFloat(fBankStream) 'Print coord.X+", "+coord.Y+", "+coord.Z FlushMem Wend Print "Time taken: " + (MilliSecs()-start) + "ms when reading floats" CloseStream(fbankStream) Type T3DCoord Field X:Float Field Y:Float Field Z:Float End Type Function GetCoords:T3DCoord(inData:String) Local tempCoord : T3DCoord = New T3DCoord Local currentChar : String = "" Local count : Int = 0 Local TokenStart : Int = 0 Local cDone:Int = 0 Local Delim:String="," If Len(Delim)<>1 Then Return Null inData= Trim(inData) For count = 0 Until Len(inData) If inData[count..count+1] = delim Then Select cDone Case 0 tempCoord.X=Float(Trim(inData[TokenStart..Count])) Case 1 tempCoord.Y=Float(Trim(inData[TokenStart..Count])) End Select TokenStart = count + 1 cDone :+1 End If Next tempCoord.Z=Float(inData[TokenStart..Count]) Return tempCoord End Function