You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2019/09/04 13:22:50 UTC

[tinkerpop] 40/40: Create less bytearray() instances - gave a decent performance bump

This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch TINKERPOP-2279
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit b51e5336801e03ce5d1f9aec9de79725694aff13
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Mon Aug 26 14:19:28 2019 -0400

    Create less bytearray() instances - gave a decent performance bump
    
    closed the gap on graphson by about 50%
---
 .../jython/gremlin_python/structure/io/graphbinaryV1.py    | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
index c287fe0..cc2b589 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
@@ -193,18 +193,22 @@ class _GraphBinaryTypeIO(object):
                  "filter_": "filter", "id_": "id", "max_": "max", "min_": "min", "sum_": "sum"}
 
     @classmethod
-    def as_bytes(cls, graphbin_type, as_value=False, nullable=True, bytes_to_write=bytes()):
-        ba = bytearray() if as_value else bytearray([graphbin_type.value])
+    def as_bytes(cls, graphbin_type, as_value=False, nullable=True, bytes_to_write=None, to_extend=None):
+        if to_extend is None:
+            to_extend = bytearray()
+            
+        if not as_value:
+            to_extend.extend([graphbin_type.value])
 
         if nullable:
-            ba.extend(struct.pack(">b", 0))
+            to_extend.extend(struct.pack(">b", 0))
 
         if isinstance(bytes_to_write, (bytes, bytearray)):
-            ba.extend(bytes_to_write)
+            to_extend.extend(bytes_to_write)
         else:
             raise Exception("MISSING")
 
-        return ba
+        return to_extend
 
     @classmethod
     def read_int(cls, buff):