benchmarkDictOffsetDataLookup.py (2502B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\fsd\schemas\benchmarks\benchmarkDictOffsetDataLookup.py 2 from __future__ import print_function 3 __author__ = 'baering' 4 import benchmarkUtil 5 from fsd.schemas.nestedIndexedOffsetData import IndexedOffsetData 6 import fsd.schemas.binaryRepresenter as binaryRepresenter 7 from fsd.schemas.loaders import readBinaryDataFromFileAtOffset, readIntFromBinaryStringAtOffset, readIntFromFileAtOffset 8 from fsd.schemas.loaders.dictLoader import StandardFSDOptimizedDictFooter, StandardFSDDictFooter 9 import fsd.schemas.binaryLoader as binaryLoader 10 import fsd.schemas.schemaOptimizer as schemaOptimizer 11 import fsd.schemas.validator as validator 12 import ctypes 13 import logging 14 log = logging.getLogger(__name__) 15 size = 100000 16 schema = {'type': 'dict', 17 'buildIndex': True, 18 'keyTypes': {'type': 'int'}, 19 'valueTypes': {'type': 'int'}} 20 optSchema = schemaOptimizer.OptimizeSchema(schema, validator.SERVER) 21 22 def CreateUnOptimizedOffsetData(key, offset, size): 23 return {'key': key, 24 'offset': offset, 25 'size': size} 26 27 28 def CreateOptimizedOffsetData(key, offset, size): 29 return (key, offset, size) 30 31 32 def CreateStandardFSDDictFooter(): 33 offsetData = [ CreateUnOptimizedOffsetData(x, x * 2, x * 3) for x in range(1, size + 1) ] 34 binaryOffsetDataTable = binaryRepresenter.RepresentAsBinary(offsetData, optSchema['keyFooter']) 35 return StandardFSDDictFooter(ctypes.create_string_buffer(binaryOffsetDataTable, len(binaryOffsetDataTable)), 0, optSchema['keyFooter'], 'Benchmark Testing', binaryLoader.LoaderState(binaryLoader.defaultLoaderFactories, None)) 36 37 38 def CreateStandardFSDOptimizedDictFooter(): 39 offsetData = [ CreateUnOptimizedOffsetData(x, x * 2, x * 3) for x in range(1, size + 1) ] 40 binaryOffsetDataTable = binaryRepresenter.RepresentAsBinary(offsetData, optSchema['keyFooter']) 41 return StandardFSDOptimizedDictFooter(ctypes.create_string_buffer(binaryOffsetDataTable, len(binaryOffsetDataTable)), optSchema) 42 43 44 unoptimizedDictFooter = CreateStandardFSDDictFooter() 45 optimizedDictFooter = CreateStandardFSDOptimizedDictFooter() 46 47 @benchmarkUtil.benchmark 48 def SearchInUnoptimizedData(): 49 print('Result:', unoptimizedDictFooter.Get(1)) 50 51 52 @benchmarkUtil.benchmark 53 def SearchInOptimizedData(): 54 print('Result:', optimizedDictFooter.Get(1)) 55 56 57 if __name__ == '__main__': 58 import logging 59 logging.basicConfig(level=logging.INFO) 60 benchmarkUtil.RunRegisteredBenchmarks('dictOffsetDataLookup_benchmark.log')