Title: perf: Optimize protobuf parsing in Redis online store by abhijeet-dhumal · Pull Request #6023 · feast-dev/feast · GitHub
Open Graph Title: perf: Optimize protobuf parsing in Redis online store by abhijeet-dhumal · Pull Request #6023 · feast-dev/feast
X Title: perf: Optimize protobuf parsing in Redis online store by abhijeet-dhumal · Pull Request #6023 · feast-dev/feast
Description: Summary Optimize protobuf deserialization in the Redis online store to reduce latency in the feature retrieval hot path. Changes Avoid redundant bytes() conversion when data is already bytes type (Redis returns bytes) Use list comprehension for more efficient batch conversion in _convert_redis_values_to_protobuf Add return type annotation for better code clarity Remove unnecessary else clause for cleaner control flow Expected Behavior Protobuf deserialization should skip unnecessary type conversions when data is already in the correct format. Current Behavior The code unconditionally calls bytes() on every value, even when the data is already bytes. For 50 entities × 200 features = 10,000 unnecessary conversion checks per request. Performance Impact Estimated savings: 2-5ms per request for typical workloads Validated via: cProfile analysis of ParseFromString cumulative time Steps to Reproduce Set up a Redis online store with a feature view containing 200 features Run get_online_features for 50 entities Profile with cProfile and observe ParseFromString overhead Specifications Version: 0.47.0+ Platform: All Subsystem: sdk/python/feast/infra/online_stores/redis.py Related RHOAIENG-46061 (60ms p99 SLA target for online feature serving)
Open Graph Description: Summary Optimize protobuf deserialization in the Redis online store to reduce latency in the feature retrieval hot path. Changes Avoid redundant bytes() conversion when data is already bytes type ...
X Description: Summary Optimize protobuf deserialization in the Redis online store to reduce latency in the feature retrieval hot path. Changes Avoid redundant bytes() conversion when data is already bytes type ...
Opengraph URL: https://github.com/feast-dev/feast/pull/6023
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:25a358c8-a0e1-6d10-5c79-130d714f0621 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | B88C:12F35E:2DB4BA0:41A27BE:6A4FB2C1 |
| html-safe-nonce | f1da72ddc3d0aca8fcba8bf3d03a09036432c68849291f0ff3035d8b1855e413 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCODhDOjEyRjM1RToyREI0QkEwOjQxQTI3QkU6NkE0RkIyQzEiLCJ2aXNpdG9yX2lkIjoiMzAwNTA5Njk2ODQ4NzY3ODY1NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 8715ca4aa451d09d554ce1fe9b74f2adbcc656982ce3734b77e667220dcb4840 |
| hovercard-subject-tag | pull_request:3326083115 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/6023/files |
| twitter:image | https://avatars.githubusercontent.com/u/84722973?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/84722973?s=400&v=4 |
| og:image:alt | Summary Optimize protobuf deserialization in the Redis online store to reduce latency in the feature retrieval hot path. Changes Avoid redundant bytes() conversion when data is already bytes type ... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | b92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9 |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 4b249b445842943ed31549e027f57a8ade9881ed |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width