Skip to content

Commit 75cbff8

Browse files
committed
perf: use list join instead of string concatenation in loop
1 parent b0231f5 commit 75cbff8

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

samtranslator/translator/translator.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,15 @@ def _get_function_names(
9898
)
9999
if not resolved_function_name:
100100
continue
101-
self.function_names.setdefault(api_name, "")
102-
self.function_names[api_name] += str(resolved_function_name)
103-
return self.function_names
101+
# OLD APPROACH: String concatenation in loop
102+
# self.function_names.setdefault(api_name, "")
103+
# self.function_names[api_name] += str(resolved_function_name)
104+
# NEW APPROACH: Collect in list
105+
if api_name not in self.function_names:
106+
self.function_names[api_name]=[]
107+
self.function_names[api_name].append(str(resolved_function_name))
108+
#backward compatibility
109+
return {api: "".join(names) for api, names in self.function_names.items()}
104110

105111
def translate( # noqa: PLR0912, PLR0915
106112
self,
@@ -127,7 +133,9 @@ def translate( # noqa: PLR0912, PLR0915
127133
self.feature_toggle = feature_toggle or FeatureToggle(
128134
FeatureToggleDefaultConfigProvider(), stage=None, account_id=None, region=None
129135
)
130-
self.function_names: Dict[Any, Any] = {}
136+
# OLD: self.function_names: Dict[Any, Any] = {}
137+
# NEW: Use List[str] for efficient accumulation, convert to str when needed
138+
self.function_names: Dict[str, List[str]] = {}
131139
self.redeploy_restapi_parameters = {}
132140
sam_parameter_values = SamParameterValues(parameter_values)
133141
sam_parameter_values.add_default_parameter_values(sam_template)

0 commit comments

Comments
 (0)