NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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')