Skip to content

Commit b8eb562

Browse files
committed
Optimize Builder startup: lazy sharedStrings and fast vtable init
1 parent 2b107e2 commit b8eb562

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

python/flatbuffers/builder.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def __init__(self, initialSize=1024):
159159
self.vtables = {}
160160
self.nested = False
161161
self.forceDefaults = False
162-
self.sharedStrings = {}
162+
self.sharedStrings = None
163163
## @endcond
164164
self.finished = False
165165

@@ -172,7 +172,7 @@ def Clear(self):
172172
self.vtables = {}
173173
self.nested = False
174174
self.forceDefaults = False
175-
self.sharedStrings = {}
175+
self.sharedStrings = None
176176
self.vectorNumElems = None
177177
## @endcond
178178
self.finished = False
@@ -201,7 +201,7 @@ def StartObject(self, numfields):
201201
self.assertNotNested()
202202

203203
# use 32-bit offsets so that arithmetic doesn't overflow.
204-
self.current_vtable = [0 for _ in range_func(numfields)]
204+
self.current_vtable = [0] * numfields
205205
self.objectEnd = self.Offset()
206206
self.nested = True
207207

@@ -457,7 +457,9 @@ def CreateSharedString(self, s, encoding="utf-8", errors="strict"):
457457
before calling CreateString.
458458
"""
459459

460-
if s in self.sharedStrings:
460+
if not self.sharedStrings:
461+
self.sharedStrings = {}
462+
elif s in self.sharedStrings:
461463
return self.sharedStrings[s]
462464

463465
off = self.CreateString(s, encoding, errors)

0 commit comments

Comments
 (0)