From 3419858cc11fa5ec5929d03db8bdd7d14733e6b4 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:37:39 +0000 Subject: [PATCH] feat: Use itertools.chain for pattern matching Replaced list concatenation with `itertools.chain` in the pattern matching loop of `PatternMatcher.match_once`. This change avoids creating a new list on every iteration, reducing memory allocation and garbage collection overhead, which can be significant for graphs with a large number of nodes. --- core.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core.py b/core.py index c9c3d3f..cb47362 100644 --- a/core.py +++ b/core.py @@ -1,6 +1,7 @@ import tensorflow.compat.v1 as tf import collections import time +import itertools from typing import Dict, List, Set, Optional, Any as AnyType, Tuple, Union from .utils.logger import ( logger as logging, @@ -582,7 +583,9 @@ def match_once( if node.name in replaced_node_names: continue - candidates = self.pattern_index.get(node.op, []) + self.wildcard_patterns + candidates = itertools.chain( + self.pattern_index.get(node.op, []), self.wildcard_patterns + ) found_match = False for pattern, rewriter in candidates: