private GeobaseLocationView GetLocation(byte[] bytes, int offset) { return(TransformationHelper.GetLocationView( ByteHelper.BytesToStruct <GeobaseLocationMarshal>(ByteHelper.GetBytes(bytes, offset, LocationLengh)) )); }
private GeobaseLocationView GetLocation(int index) { return(TransformationHelper.GetLocationView(_data.Locations[index])); }
public void PerformanceTest() { var count = 50000; var stopwatch = Stopwatch.StartNew(); var fileName = Path.Combine(Directory.GetCurrentDirectory(), "Data\\geobase.dat"); var engineDirrect = new GeobaseEngineDirrect(fileName); var offset = (int)engineDirrect.Header.OffsetLocations; var resultsMarshal = new List <GeobaseLocationView>(); for (int i = 0; i < count; i++) { var toAdd = ByteHelper.BytesToStruct <GeobaseLocationMarshal>( new ArraySegment <byte>( engineDirrect.Bytes, offset + i * engineDirrect.LocationLengh, engineDirrect.LocationLengh).ToArray() ); resultsMarshal.Add(TransformationHelper.GetLocationView(toAdd)); } stopwatch.Stop(); Console.WriteLine("BytesToObjectTest.PerformanceTest - get locations from bytes, marshal access time: " + stopwatch.Elapsed.TotalMilliseconds + " ms."); stopwatch.Restart(); var resultsDirrect = new List <GeobaseLocationView>(); for (int i = 0; i < count; i++) { resultsDirrect.Add(ByteHelper.GetLocation(engineDirrect.Bytes, offset + i * engineDirrect.LocationLengh)); } stopwatch.Stop(); Console.WriteLine("BytesToObjectTest.PerformanceTest - get locations from bytes, dirrect access time: " + stopwatch.Elapsed.TotalMilliseconds + " ms."); stopwatch.Restart(); Assert.AreEqual(resultsDirrect.Count, count); Assert.AreEqual(resultsMarshal.Count, count); Assert.AreEqual(resultsDirrect[0].city, resultsMarshal[0].city); Assert.AreEqual(resultsDirrect[0].country, resultsMarshal[0].country); Assert.AreEqual(resultsDirrect[0].latitude, resultsMarshal[0].latitude); Assert.AreEqual(resultsDirrect[0].longitude, resultsMarshal[0].longitude); Assert.AreEqual(resultsDirrect[0].organization, resultsMarshal[0].organization); Assert.AreEqual(resultsDirrect[0].postal, resultsMarshal[0].postal); Assert.AreEqual(resultsDirrect[0].region, resultsMarshal[0].region); var index = count - 10; Assert.AreEqual(resultsDirrect[index].city, resultsMarshal[index].city); Assert.AreEqual(resultsDirrect[index].country, resultsMarshal[index].country); Assert.AreEqual(resultsDirrect[index].latitude, resultsMarshal[index].latitude); Assert.AreEqual(resultsDirrect[index].longitude, resultsMarshal[index].longitude); Assert.AreEqual(resultsDirrect[index].organization, resultsMarshal[index].organization); Assert.AreEqual(resultsDirrect[index].postal, resultsMarshal[index].postal); Assert.AreEqual(resultsDirrect[index].region, resultsMarshal[index].region); index = count - 1; Assert.AreEqual(resultsDirrect[index].city, resultsMarshal[index].city); Assert.AreEqual(resultsDirrect[index].country, resultsMarshal[index].country); Assert.AreEqual(resultsDirrect[index].latitude, resultsMarshal[index].latitude); Assert.AreEqual(resultsDirrect[index].longitude, resultsMarshal[index].longitude); Assert.AreEqual(resultsDirrect[index].organization, resultsMarshal[index].organization); Assert.AreEqual(resultsDirrect[index].postal, resultsMarshal[index].postal); Assert.AreEqual(resultsDirrect[index].region, resultsMarshal[index].region); }