From 7d48fac61ce2a119934580542af8e0fa55e47f87 Mon Sep 17 00:00:00 2001 From: Robert Bradshaw Date: Thu, 7 Jun 2018 18:13:06 -0700 Subject: [PATCH] [BEAM-3981] Cleanup of coders futurization. Specifying language_level=3 allows the dict.items() optimization. This is about a 40% speedup for 1-element dicts as well as cleaner code. --- sdks/python/apache_beam/coders/coder_impl.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/sdks/python/apache_beam/coders/coder_impl.py b/sdks/python/apache_beam/coders/coder_impl.py index 2fcd0f22a31b..78d692c1f762 100644 --- a/sdks/python/apache_beam/coders/coder_impl.py +++ b/sdks/python/apache_beam/coders/coder_impl.py @@ -15,6 +15,8 @@ # limitations under the License. # +# cython: language_level=3 + """Coder implementations. The actual encode/decode implementations are split off from coders to @@ -32,7 +34,6 @@ from __future__ import absolute_import from __future__ import division -import sys from builtins import chr from builtins import object @@ -310,13 +311,7 @@ def encode_to_stream(self, value, stream, nested): dict_value = value # for typing stream.write_byte(DICT_TYPE) stream.write_var_int64(len(dict_value)) - # Use iteritems() on Python 2 instead of future.builtins.iteritems to - # avoid performance regression in Cython compiled code. - if sys.version_info[0] == 2: - items = dict_value.iteritems() # pylint: disable=dict-iter-method - else: - items = dict_value.items() - for k, v in items: + for k, v in dict_value.items(): self.encode_to_stream(k, stream, True) self.encode_to_stream(v, stream, True) elif t is bool: