This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch tristan/partial-variables-manual-string-join in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit c43bbf92ddc1c0a17981114557306a8447ffe7d7 Author: Tristan van Berkom <[email protected]> AuthorDate: Thu Jul 2 21:58:58 2020 +0900 _variables.pyx: Only intern the value class strings, not the variable names It would appear that variable name interning adds more expense than what we save on variable lookups. --- src/buildstream/_variables.pyx | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/buildstream/_variables.pyx b/src/buildstream/_variables.pyx index 152a8d3..a9a14eb 100644 --- a/src/buildstream/_variables.pyx +++ b/src/buildstream/_variables.pyx @@ -181,7 +181,6 @@ cdef class Variables: cdef Value value for key, value_node in node.items(): - key = <object> sys.intern(<str> key) value = Value() value.init(<ScalarNode> value_node) ret[key] = value @@ -279,7 +278,6 @@ cdef class Variables: # Each iteration processes a ResolutionStep object and has the possibility # to enque more ResolutionStep objects as a result. # - name = sys.intern(name) cdef PyObject *names[1] names[0] = <PyObject *>name @@ -548,14 +546,15 @@ cdef class Value: # cdef ValueClass _load_value_class(self, str string): cdef ValueClass ret - cdef str internal_string = sys.intern(string) + + string = sys.intern(string) try: - ret = VALUE_CLASS_TABLE[internal_string] + ret = VALUE_CLASS_TABLE[string] except KeyError: ret = ValueClass() - ret.init(internal_string) - VALUE_CLASS_TABLE[internal_string] = ret + ret.init(string) + VALUE_CLASS_TABLE[string] = ret return ret @@ -660,12 +659,6 @@ cdef class ValueClass: split = <str> split_object if split: - # Use an intern for the part, this will not only - # save memory but it will speed up lookups in the - # case that the part in question is used to lookup - # variable values. - split = <str> sys.intern(split) - if (idx % 2) == 0: is_variable = False else:
