{"action":"created","issue":{"url":"https://api.github.com/repos/paritytech/wasmi/issues/133","repository_url":"https://api.github.com/repos/paritytech/wasmi","labels_url":"https://api.github.com/repos/paritytech/wasmi/issues/133/labels{/name}","comments_url":"https://api.github.com/repos/paritytech/wasmi/issues/133/comments","events_url":"https://api.github.com/repos/paritytech/wasmi/issues/133/events","html_url":"https://github.com/paritytech/wasmi/pull/133","id":374361559,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI2MDgwNDI5","number":133,"title":"Remove tag from RuntimeValue","user":{"login":"Vurich","id":29733394,"node_id":"MDQ6VXNlcjI5NzMzMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/29733394?v=4","gravatar_id":"","url":"https://api.github.com/users/Vurich","html_url":"https://github.com/Vurich","followers_url":"https://api.github.com/users/Vurich/followers","following_url":"https://api.github.com/users/Vurich/following{/other_user}","gists_url":"https://api.github.com/users/Vurich/gists{/gist_id}","starred_url":"https://api.github.com/users/Vurich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vurich/subscriptions","organizations_url":"https://api.github.com/users/Vurich/orgs","repos_url":"https://api.github.com/users/Vurich/repos","events_url":"https://api.github.com/users/Vurich/events{/privacy}","received_events_url":"https://api.github.com/users/Vurich/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-10-26T12:28:06Z","updated_at":"2018-10-29T10:28:38Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/paritytech/wasmi/pulls/133","html_url":"https://github.com/paritytech/wasmi/pull/133","diff_url":"https://github.com/paritytech/wasmi/pull/133.diff","patch_url":"https://github.com/paritytech/wasmi/pull/133.patch"},"body":"This closes #99. Benchcmp results:\r\n\r\n```\r\n name               preopt.bench ns/iter  postopt.bench ns/iter  diff ns/iter   diff %  speedup \r\n bench_regex_redux  4,471,532             4,117,821                  -353,711   -7.91%   x 1.09 \r\n bench_rev_comp     10,363,517            9,552,537                  -810,980   -7.83%   x 1.08 \r\n bench_tiny_keccak  5,475,809             5,044,934                  -430,875   -7.87%   x 1.09 \r\n fac_opt            42,472                26,942                      -15,530  -36.57%   x 1.58 \r\n fac_recursive      43,852                28,770                      -15,082  -34.39%   x 1.52 \r\n recursive_ok       1,423,602             1,363,951                   -59,651   -4.19%   x 1.04 \r\n recursive_trap     182,536               160,872                     -21,664  -11.87%   x 1.13 \r\n```\r\n\r\nAll tests still pass. I expect most of these improvements are due to the fact that we double our cache efficiency by halving the size of `RuntimeValue` (since `RuntimeValue` includes a `u64`, its tag must be padded to 64 bits, making the whole value 2x the size of a u64). However, some improvements may be due to the fact that we remove some validity checking on function arguments. This was duplicated effort anyway, since that is already checked statically."},"comment":{"url":"https://api.github.com/repos/paritytech/wasmi/issues/comments/433860243","html_url":"https://github.com/paritytech/wasmi/pull/133#issuecomment-433860243","issue_url":"https://api.github.com/repos/paritytech/wasmi/issues/133","id":433860243,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMzg2MDI0Mw==","user":{"login":"Vurich","id":29733394,"node_id":"MDQ6VXNlcjI5NzMzMzk0","avatar_url":"https://avatars0.githubusercontent.com/u/29733394?v=4","gravatar_id":"","url":"https://api.github.com/users/Vurich","html_url":"https://github.com/Vurich","followers_url":"https://api.github.com/users/Vurich/followers","following_url":"https://api.github.com/users/Vurich/following{/other_user}","gists_url":"https://api.github.com/users/Vurich/gists{/gist_id}","starred_url":"https://api.github.com/users/Vurich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vurich/subscriptions","organizations_url":"https://api.github.com/users/Vurich/orgs","repos_url":"https://api.github.com/users/Vurich/repos","events_url":"https://api.github.com/users/Vurich/events{/privacy}","received_events_url":"https://api.github.com/users/Vurich/received_events","type":"User","site_admin":false},"created_at":"2018-10-29T10:28:38Z","updated_at":"2018-10-29T10:28:38Z","author_association":"CONTRIBUTOR","body":"Per mine and @pepyakin's discussion in private, we seem to get such a huge improvement on the factorial benchmarks because zeroing allocation can use `memset`/`calloc` now instead of having to write bytes individually. Before it was setting stack values to `I32(0)`, which (seemingly) doesn't have the tag `0` and so `memset(0)` wouldn't work, but now because it's essentially just writing a zeroed u64 Rust can generate a `memset` or `calloc` (depending on whether we're on the stack or the heap, respectively)."}}
{"actor":{"display_login":"Vurich"}}