{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/corefx/issues/31751","repository_url":"https://api.github.com/repos/dotnet/corefx","labels_url":"https://api.github.com/repos/dotnet/corefx/issues/31751/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/31751/comments","events_url":"https://api.github.com/repos/dotnet/corefx/issues/31751/events","html_url":"https://github.com/dotnet/corefx/issues/31751","id":350228287,"node_id":"MDU6SXNzdWUzNTAyMjgyODc=","number":31751,"title":"HTTP2: Huffman decoding implementation is inefficient","user":{"login":"geoffkizer","id":12518809,"node_id":"MDQ6VXNlcjEyNTE4ODA5","avatar_url":"https://avatars2.githubusercontent.com/u/12518809?v=4","gravatar_id":"","url":"https://api.github.com/users/geoffkizer","html_url":"https://github.com/geoffkizer","followers_url":"https://api.github.com/users/geoffkizer/followers","following_url":"https://api.github.com/users/geoffkizer/following{/other_user}","gists_url":"https://api.github.com/users/geoffkizer/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffkizer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffkizer/subscriptions","organizations_url":"https://api.github.com/users/geoffkizer/orgs","repos_url":"https://api.github.com/users/geoffkizer/repos","events_url":"https://api.github.com/users/geoffkizer/events{/privacy}","received_events_url":"https://api.github.com/users/geoffkizer/received_events","type":"User","site_admin":false},"labels":[{"id":809472144,"node_id":"MDU6TGFiZWw4MDk0NzIxNDQ=","url":"https://api.github.com/repos/dotnet/corefx/labels/area-System.Net.Http.SocketsHttpHandler","name":"area-System.Net.Http.SocketsHttpHandler","color":"d4c5f9","default":false},{"id":145399957,"node_id":"MDU6TGFiZWwxNDUzOTk5NTc=","url":"https://api.github.com/repos/dotnet/corefx/labels/enhancement","name":"enhancement","color":"207de5","default":true},{"id":153500238,"node_id":"MDU6TGFiZWwxNTM1MDAyMzg=","url":"https://api.github.com/repos/dotnet/corefx/labels/tenet-performance","name":"tenet-performance","color":"c2e0c6","default":false},{"id":145399958,"node_id":"MDU6TGFiZWwxNDUzOTk5NTg=","url":"https://api.github.com/repos/dotnet/corefx/labels/up-for-grabs","name":"up-for-grabs","color":"159818","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/dotnet/corefx/milestones/21","html_url":"https://github.com/dotnet/corefx/milestone/21","labels_url":"https://api.github.com/repos/dotnet/corefx/milestones/21/labels","id":3242632,"node_id":"MDk6TWlsZXN0b25lMzI0MjYzMg==","number":21,"title":"3.0","description":".NET Core 3.0, next major release after 2.1. See [official release dates](https://github.com/dotnet/core/blob/master/roadmap.md) for details.\r\n\r\nWe will move important issues from Future to 3.0 as the priorities and dates for next release become more clear.","creator":{"login":"karelz","id":5776068,"node_id":"MDQ6VXNlcjU3NzYwNjg=","avatar_url":"https://avatars2.githubusercontent.com/u/5776068?v=4","gravatar_id":"","url":"https://api.github.com/users/karelz","html_url":"https://github.com/karelz","followers_url":"https://api.github.com/users/karelz/followers","following_url":"https://api.github.com/users/karelz/following{/other_user}","gists_url":"https://api.github.com/users/karelz/gists{/gist_id}","starred_url":"https://api.github.com/users/karelz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karelz/subscriptions","organizations_url":"https://api.github.com/users/karelz/orgs","repos_url":"https://api.github.com/users/karelz/repos","events_url":"https://api.github.com/users/karelz/events{/privacy}","received_events_url":"https://api.github.com/users/karelz/received_events","type":"User","site_admin":false},"open_issues":251,"closed_issues":2051,"state":"open","created_at":"2018-04-04T16:40:10Z","updated_at":"2018-09-06T18:34:07Z","due_on":null,"closed_at":null},"comments":80,"created_at":"2018-08-13T23:24:23Z","updated_at":"2018-09-06T18:43:43Z","closed_at":null,"author_association":"MEMBER","body":"We are currently implementing Huffman decoding by looping over a table with a list of encoded values for each length.  (See Huffman.cs)\r\n\r\nThis doesn't seem particularly efficient.\r\n\r\nInstead, we should implement Huffman decoding by doing table lookups, using keys of 8 bits or something along those lines. \r\n\r\nNote that Huffman encoding from servers seems to be pretty common, so this may have real-world perf impact. (Or maybe not... as always, measuring is the best way to know.)"},"comment":{"url":"https://api.github.com/repos/dotnet/corefx/issues/comments/419200494","html_url":"https://github.com/dotnet/corefx/issues/31751#issuecomment-419200494","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/31751","id":419200494,"node_id":"MDEyOklzc3VlQ29tbWVudDQxOTIwMDQ5NA==","user":{"login":"jbhensley","id":13544395,"node_id":"MDQ6VXNlcjEzNTQ0Mzk1","avatar_url":"https://avatars1.githubusercontent.com/u/13544395?v=4","gravatar_id":"","url":"https://api.github.com/users/jbhensley","html_url":"https://github.com/jbhensley","followers_url":"https://api.github.com/users/jbhensley/followers","following_url":"https://api.github.com/users/jbhensley/following{/other_user}","gists_url":"https://api.github.com/users/jbhensley/gists{/gist_id}","starred_url":"https://api.github.com/users/jbhensley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbhensley/subscriptions","organizations_url":"https://api.github.com/users/jbhensley/orgs","repos_url":"https://api.github.com/users/jbhensley/repos","events_url":"https://api.github.com/users/jbhensley/events{/privacy}","received_events_url":"https://api.github.com/users/jbhensley/received_events","type":"User","site_admin":false},"created_at":"2018-09-06T18:43:43Z","updated_at":"2018-09-06T18:43:43Z","author_association":"NONE","body":"I agree that correctness can be fixed aside from any algorithmic change. Unit tests from #32043 have been incorporated and are passing. I'll be updating the PR shortly. There was one correction to the code that the tests turned up for invalid inputs. \r\n\r\nFor perf, it looks like @grant-d has managed to get the original code to scale at 0.84 as per [above](https://github.com/dotnet/corefx/issues/31751#issuecomment-419177939). The last test with the array method is at 0.36 as per [here](https://github.com/dotnet/corefx/pull/32124#issuecomment-418888646).\r\n\r\nI'm not sure how we attempt to answer whether the trade-off of memory for speed is worth it in this scenario."}}
{"actor":{"display_login":"jbhensley"}}