mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-02 03:33:57 +00:00
Optimize Builder startup: lazy sharedStrings and fast vtable init (#8807)
This commit is contained in:
@@ -159,7 +159,7 @@ class Builder(object):
|
|||||||
self.vtables = {}
|
self.vtables = {}
|
||||||
self.nested = False
|
self.nested = False
|
||||||
self.forceDefaults = False
|
self.forceDefaults = False
|
||||||
self.sharedStrings = {}
|
self.sharedStrings = None
|
||||||
## @endcond
|
## @endcond
|
||||||
self.finished = False
|
self.finished = False
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ class Builder(object):
|
|||||||
self.vtables = {}
|
self.vtables = {}
|
||||||
self.nested = False
|
self.nested = False
|
||||||
self.forceDefaults = False
|
self.forceDefaults = False
|
||||||
self.sharedStrings = {}
|
self.sharedStrings = None
|
||||||
self.vectorNumElems = None
|
self.vectorNumElems = None
|
||||||
## @endcond
|
## @endcond
|
||||||
self.finished = False
|
self.finished = False
|
||||||
@@ -201,7 +201,7 @@ class Builder(object):
|
|||||||
self.assertNotNested()
|
self.assertNotNested()
|
||||||
|
|
||||||
# use 32-bit offsets so that arithmetic doesn't overflow.
|
# use 32-bit offsets so that arithmetic doesn't overflow.
|
||||||
self.current_vtable = [0 for _ in range_func(numfields)]
|
self.current_vtable = [0] * numfields
|
||||||
self.objectEnd = self.Offset()
|
self.objectEnd = self.Offset()
|
||||||
self.nested = True
|
self.nested = True
|
||||||
|
|
||||||
@@ -457,7 +457,9 @@ class Builder(object):
|
|||||||
before calling CreateString.
|
before calling CreateString.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if s in self.sharedStrings:
|
if not self.sharedStrings:
|
||||||
|
self.sharedStrings = {}
|
||||||
|
elif s in self.sharedStrings:
|
||||||
return self.sharedStrings[s]
|
return self.sharedStrings[s]
|
||||||
|
|
||||||
off = self.CreateString(s, encoding, errors)
|
off = self.CreateString(s, encoding, errors)
|
||||||
|
|||||||
Reference in New Issue
Block a user