You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here’s a significantly faster version of your code.
- Don't use a list comprehension to build the list: `" ".join(map(str, range(number)))` is slightly faster and uses less memory.
- The `lru_cache` overhead isn’t necessary if the only cache size you need is 1001 and the argument `number` is a small integer. It's faster and lower overhead to use a simple dict for caching, and you can control the cache size yourself.
- Precompute the string results only as needed.
Here’s the optimized version.
**Notes:**
- `" ".join(map(str, ...))` is faster and more memory-efficient than a list comprehension here.
- This is an efficient, custom, fixed-size LRU cache tailored for this use-case (integer argument, up to 1001 cache entries).
- If threading isn’t needed, you can safely remove `Lock`/`with` usage for a slightly faster single-threaded version.
- The function signature and return value are unchanged.
- All original comments (the single one) are still accurate: `"map(str, ...)"` is used for faster conversion.
If you want the absolutely highest performance in a single-threaded setting, drop the Lock.
Either way, you get better performance and lower memory per invocation.
0 commit comments