{"action":"created","issue":{"url":"https://api.github.com/repos/netty/netty/issues/4369","labels_url":"https://api.github.com/repos/netty/netty/issues/4369/labels{/name}","comments_url":"https://api.github.com/repos/netty/netty/issues/4369/comments","events_url":"https://api.github.com/repos/netty/netty/issues/4369/events","html_url":"https://github.com/netty/netty/pull/4369","id":111883604,"number":4369,"title":"Minimize reference count checks in SlicedByteBuf","user":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/netty/netty/labels/improvement","name":"improvement","color":"0052cc"}],"state":"open","locked":false,"assignee":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/netty/netty/milestones/128","html_url":"https://github.com/netty/netty/milestones/4.0.33.Final","labels_url":"https://api.github.com/repos/netty/netty/milestones/128/labels","id":1330526,"number":128,"title":"4.0.33.Final","description":"","creator":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"open_issues":71,"closed_issues":28,"state":"open","created_at":"2015-09-30T06:32:01Z","updated_at":"2015-10-16T18:52:56Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2015-10-16T18:19:33Z","updated_at":"2015-10-16T18:55:06Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/netty/netty/pulls/4369","html_url":"https://github.com/netty/netty/pull/4369","diff_url":"https://github.com/netty/netty/pull/4369.diff","patch_url":"https://github.com/netty/netty/pull/4369.patch"},"body":"Motivation:\r\n\r\nSlicedByteBuf did double reference count checking for various bulk operations, which affects performance.\r\n\r\nModifications:\r\n\r\n- Add package private method to AbstractByteBuf that can be used to check indexes without check the reference count\r\n- Use this new method in the bulk operation os SlicedByteBuf as the reference count checks take place on the wrapped buffer anyway\r\n- Fix test-case to not try to read data that is out of the bounds of the buffer.\r\n\r\nResult:\r\n\r\nBetter performance on bulk operations when using SlicedByteBuf (and sub-classes)"},"comment":{"url":"https://api.github.com/repos/netty/netty/issues/comments/148806169","html_url":"https://github.com/netty/netty/pull/4369#issuecomment-148806169","issue_url":"https://api.github.com/repos/netty/netty/issues/4369","id":148806169,"user":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"created_at":"2015-10-16T18:55:06Z","updated_at":"2015-10-16T18:55:06Z","body":"@Scottmitch let me cherry-pick this first (as it is an improvement) and then think about your idea. It might be possible :) "}}