{"action":"created","issue":{"url":"https://api.github.com/repos/netty/netty/issues/3593","labels_url":"https://api.github.com/repos/netty/netty/issues/3593/labels{/name}","comments_url":"https://api.github.com/repos/netty/netty/issues/3593/comments","events_url":"https://api.github.com/repos/netty/netty/issues/3593/events","html_url":"https://github.com/netty/netty/pull/3593","id":66692135,"number":3593,"title":"Optimizing user-defined stream properties.","user":{"login":"nmittler","id":6493296,"avatar_url":"https://avatars.githubusercontent.com/u/6493296?v=3","gravatar_id":"","url":"https://api.github.com/users/nmittler","html_url":"https://github.com/nmittler","followers_url":"https://api.github.com/users/nmittler/followers","following_url":"https://api.github.com/users/nmittler/following{/other_user}","gists_url":"https://api.github.com/users/nmittler/gists{/gist_id}","starred_url":"https://api.github.com/users/nmittler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nmittler/subscriptions","organizations_url":"https://api.github.com/users/nmittler/orgs","repos_url":"https://api.github.com/users/nmittler/repos","events_url":"https://api.github.com/users/nmittler/events{/privacy}","received_events_url":"https://api.github.com/users/nmittler/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"nmittler","id":6493296,"avatar_url":"https://avatars.githubusercontent.com/u/6493296?v=3","gravatar_id":"","url":"https://api.github.com/users/nmittler","html_url":"https://github.com/nmittler","followers_url":"https://api.github.com/users/nmittler/followers","following_url":"https://api.github.com/users/nmittler/following{/other_user}","gists_url":"https://api.github.com/users/nmittler/gists{/gist_id}","starred_url":"https://api.github.com/users/nmittler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nmittler/subscriptions","organizations_url":"https://api.github.com/users/nmittler/orgs","repos_url":"https://api.github.com/users/nmittler/repos","events_url":"https://api.github.com/users/nmittler/events{/privacy}","received_events_url":"https://api.github.com/users/nmittler/received_events","type":"User","site_admin":false},"milestone":null,"comments":25,"created_at":"2015-04-06T19:56:20Z","updated_at":"2015-04-16T19:05:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/netty/netty/pulls/3593","html_url":"https://github.com/netty/netty/pull/3593","diff_url":"https://github.com/netty/netty/pull/3593.diff","patch_url":"https://github.com/netty/netty/pull/3593.patch"},"body":"Motivation:\r\n\r\nStreams currently maintain a hash map of user-defined properties, which has been shown to add significant memory overhead as well as being a performance bottleneck for lookup of frequently used properties.\r\n\r\nModifications:\r\n\r\nModifying the connection/stream to use an array as the storage of user-defined properties, indexed by a Key object that identifies the index into the array where the property is stored.\r\n\r\nResult:\r\n\r\nStream processing performance should be improved."},"comment":{"url":"https://api.github.com/repos/netty/netty/issues/comments/93816874","html_url":"https://github.com/netty/netty/pull/3593#issuecomment-93816874","issue_url":"https://api.github.com/repos/netty/netty/issues/3593","id":93816874,"user":{"login":"buchgr","id":1388179,"avatar_url":"https://avatars.githubusercontent.com/u/1388179?v=3","gravatar_id":"","url":"https://api.github.com/users/buchgr","html_url":"https://github.com/buchgr","followers_url":"https://api.github.com/users/buchgr/followers","following_url":"https://api.github.com/users/buchgr/following{/other_user}","gists_url":"https://api.github.com/users/buchgr/gists{/gist_id}","starred_url":"https://api.github.com/users/buchgr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buchgr/subscriptions","organizations_url":"https://api.github.com/users/buchgr/orgs","repos_url":"https://api.github.com/users/buchgr/repos","events_url":"https://api.github.com/users/buchgr/events{/privacy}","received_events_url":"https://api.github.com/users/buchgr/received_events","type":"User","site_admin":false},"created_at":"2015-04-16T19:05:41Z","updated_at":"2015-04-16T19:05:41Z","body":"> This PR makes the property keys tied to each connection, which introduces more state / object allocation. I understand this abstraction and see why it makes sense however there seems to be a use-case for stateless property key management where property key structure is the same across all connections. Is there a way to address both concerns, allow flexibility of dynamic property keys but recognizing there may be many where some subset of property keys are the same across all connections?\r\n\r\n@Scottmitch it could probably be done similar to `FastThreadLocal`."}}