mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-06 08:16:43 +00:00
Merge pull request #15575 from BerriAI/litellm_remove_constly_string_operation
perf(router): optimize string concatenation in hash generation
This commit is contained in:
commit
4e84937efc
2 changed files with 12 additions and 8 deletions
|
|
@ -4915,22 +4915,25 @@ class Router:
|
|||
- hash
|
||||
- use hash as id
|
||||
"""
|
||||
concat_str = model_group
|
||||
# Optimized: Use list and join instead of string concatenation in loop
|
||||
# This avoids creating many temporary string objects (O(n) vs O(n²) complexity)
|
||||
parts = [model_group]
|
||||
for k, v in litellm_params.items():
|
||||
if isinstance(k, str):
|
||||
concat_str += k
|
||||
parts.append(k)
|
||||
elif isinstance(k, dict):
|
||||
concat_str += json.dumps(k)
|
||||
parts.append(json.dumps(k))
|
||||
else:
|
||||
concat_str += str(k)
|
||||
parts.append(str(k))
|
||||
|
||||
if isinstance(v, str):
|
||||
concat_str += v
|
||||
parts.append(v)
|
||||
elif isinstance(v, dict):
|
||||
concat_str += json.dumps(v)
|
||||
parts.append(json.dumps(v))
|
||||
else:
|
||||
concat_str += str(v)
|
||||
parts.append(str(v))
|
||||
|
||||
concat_str = "".join(parts)
|
||||
hash_object = hashlib.sha256(concat_str.encode())
|
||||
|
||||
return hash_object.hexdigest()
|
||||
|
|
|
|||
|
|
@ -1411,7 +1411,8 @@ def test_generate_model_id_with_deployment_model_name(model_list):
|
|||
"Expected TypeError when model_group is None - this confirms our fix is needed"
|
||||
)
|
||||
except TypeError as e:
|
||||
assert "unsupported operand type(s) for +=" in str(e)
|
||||
# After optimization, error message changed but still fails appropriately on None
|
||||
assert "unsupported operand type(s) for +=" in str(e) or "expected str instance, NoneType found" in str(e)
|
||||
print(f"✓ Correctly failed with None model_group (as expected): {e}")
|
||||
except Exception as e:
|
||||
pytest.fail(f"Unexpected error with None model_group: {e}")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue