<div dir="ltr">I am not sure how under any situation parsing a JSON from a stream source would be any faster than parsing a string. Also with regards to timing I am not sure how accurate Now is. For this purpose I've written:<div><br></div><div>{ Return a time based on system performance counters }</div><div>function TimeQuery: Double;</div><div><br></div><div>Implemented as:</div><div><br></div><div>const<br>{$ifdef linux}<br>  libc = 'libc.so';<br>{$endif}<br>{$ifdef darwin}<br>  libc = 'libSystem.dylib';<br>{$endif}<br>function gettimeofday(out TimeVal: TTimeVal; TimeZone: PTimeVal): Integer; apicall; external libc;<br><br>var<br>  TimeSec: SysInt;<br><br>function TimeQuery: Double;<br>var<br>  TimeVal: TTimeVal;<br>begin<br>  gettimeofday(TimeVal, nil);<br>  if TimeSec = 0 then<br>    TimeSec := TimeVal.Sec;<br>  TimeVal.Sec := TimeVal.Sec - TimeSec;<br>  Result := TimeVal.Sec + TimeVal.MSec / 1000000;<br>end;<br>{$endif}<br><br>{$ifdef windows}<br>const<br>  kernel32  = 'kernel32.dll';<br><br>function QueryPerformanceCounter(var Counter: Int64): LongBool; apicall; external kernel32;<br>function QueryPerformanceFrequency(var Frequency: Int64): LongBool; apicall; external kernel32;<br><br>function TimeQuery: Double;<br>var<br>  C, F: Int64;<br>begin<br>  F := 0;<br>  C := 0;<br>  if QueryPerformanceFrequency(F) and QueryPerformanceCounter(C) then<br>    Result := C / F<br>  else<br>    Result := 0;<br>end;<br>{$endif}</div></div>