{"action":"created","issue":{"url":"https://api.github.com/repos/indutny/llparse/issues/10","repository_url":"https://api.github.com/repos/indutny/llparse","labels_url":"https://api.github.com/repos/indutny/llparse/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/indutny/llparse/issues/10/comments","events_url":"https://api.github.com/repos/indutny/llparse/issues/10/events","html_url":"https://github.com/indutny/llparse/issues/10","id":300863513,"number":10,"title":"Supplement LLVM's `switch` optimization","user":{"login":"indutny","id":238531,"avatar_url":"https://avatars3.githubusercontent.com/u/238531?v=4","gravatar_id":"","url":"https://api.github.com/users/indutny","html_url":"https://github.com/indutny","followers_url":"https://api.github.com/users/indutny/followers","following_url":"https://api.github.com/users/indutny/following{/other_user}","gists_url":"https://api.github.com/users/indutny/gists{/gist_id}","starred_url":"https://api.github.com/users/indutny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indutny/subscriptions","organizations_url":"https://api.github.com/users/indutny/orgs","repos_url":"https://api.github.com/users/indutny/repos","events_url":"https://api.github.com/users/indutny/events{/privacy}","received_events_url":"https://api.github.com/users/indutny/received_events","type":"User","site_admin":false},"labels":[{"id":834488837,"url":"https://api.github.com/repos/indutny/llparse/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2018-02-28T02:05:47Z","updated_at":"2018-03-02T00:44:04Z","closed_at":"2018-03-02T00:43:42Z","author_association":"OWNER","body":"There're lots of cases where we're matching against the range of the values, e.g. `0x20 - 0xff`. LLVM does great job when there's nothing outside of this range, but when there're several ranges, or just few characters outside of the range - the code is optimized into a jump table, which leads to sub-optimal performance.\r\n\r\nThus we should either split the `switch` into several sub-switches, contribute a patch to LLVM for more sophisticated `switch` optimization, or generate more elaborate code ourselves."},"comment":{"url":"https://api.github.com/repos/indutny/llparse/issues/comments/369781745","html_url":"https://github.com/indutny/llparse/issues/10#issuecomment-369781745","issue_url":"https://api.github.com/repos/indutny/llparse/issues/10","id":369781745,"user":{"login":"indutny","id":238531,"avatar_url":"https://avatars3.githubusercontent.com/u/238531?v=4","gravatar_id":"","url":"https://api.github.com/users/indutny","html_url":"https://github.com/indutny","followers_url":"https://api.github.com/users/indutny/followers","following_url":"https://api.github.com/users/indutny/following{/other_user}","gists_url":"https://api.github.com/users/indutny/gists{/gist_id}","starred_url":"https://api.github.com/users/indutny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indutny/subscriptions","organizations_url":"https://api.github.com/users/indutny/orgs","repos_url":"https://api.github.com/users/indutny/repos","events_url":"https://api.github.com/users/indutny/events{/privacy}","received_events_url":"https://api.github.com/users/indutny/received_events","type":"User","site_admin":false},"created_at":"2018-03-02T00:44:04Z","updated_at":"2018-03-02T00:44:04Z","author_association":"OWNER","body":"Improved url parsing speed in `llhttp` from 400 mb/s to 800 mb/s!"}}
{"actor":{"display_login":"indutny"}}