From 75cbff84310a48331f9aa940b2c57fd0c07b04f8 Mon Sep 17 00:00:00 2001 From: Akshat Sinha Date: Thu, 16 Oct 2025 19:31:07 +0530 Subject: [PATCH 1/2] perf: use list join instead of string concatenation in loop --- samtranslator/translator/translator.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/samtranslator/translator/translator.py b/samtranslator/translator/translator.py index b4a0528973..1745b9fcaf 100644 --- a/samtranslator/translator/translator.py +++ b/samtranslator/translator/translator.py @@ -98,9 +98,15 @@ def _get_function_names( ) if not resolved_function_name: continue - self.function_names.setdefault(api_name, "") - self.function_names[api_name] += str(resolved_function_name) - return self.function_names + # OLD APPROACH: String concatenation in loop + # self.function_names.setdefault(api_name, "") + # self.function_names[api_name] += str(resolved_function_name) + # NEW APPROACH: Collect in list + if api_name not in self.function_names: + self.function_names[api_name]=[] + self.function_names[api_name].append(str(resolved_function_name)) + #backward compatibility + return {api: "".join(names) for api, names in self.function_names.items()} def translate( # noqa: PLR0912, PLR0915 self, @@ -127,7 +133,9 @@ def translate( # noqa: PLR0912, PLR0915 self.feature_toggle = feature_toggle or FeatureToggle( FeatureToggleDefaultConfigProvider(), stage=None, account_id=None, region=None ) - self.function_names: Dict[Any, Any] = {} + # OLD: self.function_names: Dict[Any, Any] = {} + # NEW: Use List[str] for efficient accumulation, convert to str when needed + self.function_names: Dict[str, List[str]] = {} self.redeploy_restapi_parameters = {} sam_parameter_values = SamParameterValues(parameter_values) sam_parameter_values.add_default_parameter_values(sam_template) From b944a5f6d8bfef48c988bf2183c25fd689703f5b Mon Sep 17 00:00:00 2001 From: Akshat Sinha Date: Thu, 16 Oct 2025 23:51:00 +0530 Subject: [PATCH 2/2] refactor: addressing comment removals --- samtranslator/translator/translator.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/samtranslator/translator/translator.py b/samtranslator/translator/translator.py index 1745b9fcaf..a646ecba42 100644 --- a/samtranslator/translator/translator.py +++ b/samtranslator/translator/translator.py @@ -98,14 +98,8 @@ def _get_function_names( ) if not resolved_function_name: continue - # OLD APPROACH: String concatenation in loop - # self.function_names.setdefault(api_name, "") - # self.function_names[api_name] += str(resolved_function_name) - # NEW APPROACH: Collect in list - if api_name not in self.function_names: - self.function_names[api_name]=[] + self.function_names.setdefault(api_name,[]) self.function_names[api_name].append(str(resolved_function_name)) - #backward compatibility return {api: "".join(names) for api, names in self.function_names.items()} def translate( # noqa: PLR0912, PLR0915 @@ -133,8 +127,6 @@ def translate( # noqa: PLR0912, PLR0915 self.feature_toggle = feature_toggle or FeatureToggle( FeatureToggleDefaultConfigProvider(), stage=None, account_id=None, region=None ) - # OLD: self.function_names: Dict[Any, Any] = {} - # NEW: Use List[str] for efficient accumulation, convert to str when needed self.function_names: Dict[str, List[str]] = {} self.redeploy_restapi_parameters = {} sam_parameter_values = SamParameterValues(parameter_values)