Skip to content

Commit

Permalink
refactor: ⚡️ Speed up function _truncate_value by 45% (main) (#6334)
Browse files Browse the repository at this point in the history
⚡️ Speed up function `_truncate_value` by 45% in PR #6323 (`test-smol`)
To optimize the Python program for faster performance, we should make a few adjustments. Specifically, the use of multiple `isinstance` checks and logical conditioning can be streamlined to reduce the runtime overhead. Here's the optimized version of the program.



### Explanation.

1. **Order and Conditions**: We adjusted the order to check the limit first. This way, we only perform the `isinstance` check if the limit is set, thereby potentially reducing the number of checks needed.
2. **Combined Types**: Instead of using `isinstance(value, list | tuple)`, which uses the `|` operator for a union type, we use the more traditional tuple form `isinstance(value, (list, tuple))`. This makes it explicit that we’re checking against multiple types and can be a bit faster.
  
These changes should result in slight performance improvements by reducing the number of checks and short-circuiting earlier.

Co-authored-by: codeflash-ai[bot] <148906541+codeflash-ai[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <[email protected]>
  • Loading branch information
codeflash-ai[bot] and ogabrielluiz authored Feb 13, 2025
1 parent 63294b9 commit f3ddbcf
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/backend/base/langflow/serialization/serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,9 @@ def _serialize_instance(obj: Any, *_) -> str:

def _truncate_value(value: Any, max_length: int | None, max_items: int | None) -> Any:
"""Truncate value based on its type and provided limits."""
if isinstance(value, str) and max_length is not None and len(value) > max_length:
if max_length is not None and isinstance(value, str) and len(value) > max_length:
return value[:max_length]
if isinstance(value, list | tuple) and max_items is not None and len(value) > max_items:
if max_items is not None and isinstance(value, (list, tuple)) and len(value) > max_items:
return value[:max_items]
return value

Expand Down

0 comments on commit f3ddbcf

Please sign in to comment.