Optimize Builder startup: lazy sharedStrings and fast vtable init (#8807)

This commit is contained in:
Jacob Abrams
2025-11-30 15:33:34 -08:00
committed by GitHub
parent 49d2db93a7
commit 7350c3668f

View File

@@ -159,7 +159,7 @@ class Builder(object):
self.vtables = {}
self.nested = False
self.forceDefaults = False
self.sharedStrings = {}
self.sharedStrings = None
## @endcond
self.finished = False
@@ -172,7 +172,7 @@ class Builder(object):
self.vtables = {}
self.nested = False
self.forceDefaults = False
self.sharedStrings = {}
self.sharedStrings = None
self.vectorNumElems = None
## @endcond
self.finished = False
@@ -201,7 +201,7 @@ class Builder(object):
self.assertNotNested()
# 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.nested = True
@@ -457,7 +457,9 @@ class Builder(object):
before calling CreateString.
"""
if s in self.sharedStrings:
if not self.sharedStrings:
self.sharedStrings = {}
elif s in self.sharedStrings:
return self.sharedStrings[s]
off = self.CreateString(s, encoding, errors)