{"action":"created","issue":{"url":"https://api.github.com/repos/mcollina/bloomrun/issues/31","repository_url":"https://api.github.com/repos/mcollina/bloomrun","labels_url":"https://api.github.com/repos/mcollina/bloomrun/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/mcollina/bloomrun/issues/31/comments","events_url":"https://api.github.com/repos/mcollina/bloomrun/issues/31/events","html_url":"https://github.com/mcollina/bloomrun/pull/31","id":161040268,"number":31,"title":"XOR Check for strings","user":{"login":"mcdonnelldean","id":3625961,"avatar_url":"https://avatars.githubusercontent.com/u/3625961?v=3","gravatar_id":"","url":"https://api.github.com/users/mcdonnelldean","html_url":"https://github.com/mcdonnelldean","followers_url":"https://api.github.com/users/mcdonnelldean/followers","following_url":"https://api.github.com/users/mcdonnelldean/following{/other_user}","gists_url":"https://api.github.com/users/mcdonnelldean/gists{/gist_id}","starred_url":"https://api.github.com/users/mcdonnelldean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcdonnelldean/subscriptions","organizations_url":"https://api.github.com/users/mcdonnelldean/orgs","repos_url":"https://api.github.com/users/mcdonnelldean/repos","events_url":"https://api.github.com/users/mcdonnelldean/events{/privacy}","received_events_url":"https://api.github.com/users/mcdonnelldean/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-06-18T19:42:31Z","updated_at":"2016-06-18T19:45:32Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mcollina/bloomrun/pulls/31","html_url":"https://github.com/mcollina/bloomrun/pull/31","diff_url":"https://github.com/mcollina/bloomrun/pull/31.diff","patch_url":"https://github.com/mcollina/bloomrun/pull/31.patch"},"body":"CC: @mcollina @davidmarkclements \r\n\r\nIn a weird twist of fate, on average, the XOR check is faster than simple equality.\r\n\r\n### With XOR\r\n```\r\nthreeEntries*100000: 268ms\r\nfiveHundredEntries*100000: 2396ms\r\nfiveHundredEntriesAndProperties*100000: 2418ms\r\nfiveHundredEntriesAndKnownProperties*100000: 2440ms\r\npatrunThreeEntries*100000: 4095ms\r\npatrunFiveHundredEntriesAndProperties*100000: 18429ms\r\nthreeEntries*100000: 266ms\r\nfiveHundredEntries*100000: 2418ms\r\nfiveHundredEntriesAndProperties*100000: 2400ms\r\nfiveHundredEntriesAndKnownProperties*100000: 2441ms\r\npatrunThreeEntries*100000: 4106ms\r\npatrunFiveHundredEntriesAndProperties*100000: 18484ms\r\n```\r\n\r\n### Simple === check\r\n```\r\nthreeEntries*100000: 272ms\r\nfiveHundredEntries*100000: 2435ms\r\nfiveHundredEntriesAndProperties*100000: 2408ms\r\nfiveHundredEntriesAndKnownProperties*100000: 2416ms\r\npatrunThreeEntries*100000: 4132ms\r\npatrunFiveHundredEntriesAndProperties*100000: 18291ms\r\nthreeEntries*100000: 268ms\r\nfiveHundredEntries*100000: 2415ms\r\nfiveHundredEntriesAndProperties*100000: 2414ms\r\nfiveHundredEntriesAndKnownProperties*100000: 2582ms\r\npatrunThreeEntries*100000: 4239ms\r\npatrunFiveHundredEntriesAndProperties*100000: 19192ms\r\n```\r\n\r\nHaving said that the variance is so little over more than 10 runs that they are for all intents and purposes comparable performance wise. Because of this I have opted to make it the default rather than providing an option to enable.\r\n\r\nThoughts?"},"comment":{"url":"https://api.github.com/repos/mcollina/bloomrun/issues/comments/226961393","html_url":"https://github.com/mcollina/bloomrun/pull/31#issuecomment-226961393","issue_url":"https://api.github.com/repos/mcollina/bloomrun/issues/31","id":226961393,"user":{"login":"mcdonnelldean","id":3625961,"avatar_url":"https://avatars.githubusercontent.com/u/3625961?v=3","gravatar_id":"","url":"https://api.github.com/users/mcdonnelldean","html_url":"https://github.com/mcdonnelldean","followers_url":"https://api.github.com/users/mcdonnelldean/followers","following_url":"https://api.github.com/users/mcdonnelldean/following{/other_user}","gists_url":"https://api.github.com/users/mcdonnelldean/gists{/gist_id}","starred_url":"https://api.github.com/users/mcdonnelldean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcdonnelldean/subscriptions","organizations_url":"https://api.github.com/users/mcdonnelldean/orgs","repos_url":"https://api.github.com/users/mcdonnelldean/repos","events_url":"https://api.github.com/users/mcdonnelldean/events{/privacy}","received_events_url":"https://api.github.com/users/mcdonnelldean/received_events","type":"User","site_admin":false},"created_at":"2016-06-18T19:45:32Z","updated_at":"2016-06-18T19:45:32Z","body":"@mcollina Re coveralls, I can improve coverage but it will involve moving the `equal()` function and exposing it. Thoughts?"}}
{"actor":{"display_login":"mcdonnelldean"}}