{"action":"created","issue":{"url":"https://api.github.com/repos/atom/text-buffer/issues/114","labels_url":"https://api.github.com/repos/atom/text-buffer/issues/114/labels{/name}","comments_url":"https://api.github.com/repos/atom/text-buffer/issues/114/comments","events_url":"https://api.github.com/repos/atom/text-buffer/issues/114/events","html_url":"https://github.com/atom/text-buffer/pull/114","id":117961301,"number":114,"title":"Use native MarkerIndex implementation","user":{"login":"nathansobo","id":1789,"avatar_url":"https://avatars.githubusercontent.com/u/1789?v=3","gravatar_id":"","url":"https://api.github.com/users/nathansobo","html_url":"https://github.com/nathansobo","followers_url":"https://api.github.com/users/nathansobo/followers","following_url":"https://api.github.com/users/nathansobo/following{/other_user}","gists_url":"https://api.github.com/users/nathansobo/gists{/gist_id}","starred_url":"https://api.github.com/users/nathansobo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathansobo/subscriptions","organizations_url":"https://api.github.com/users/nathansobo/orgs","repos_url":"https://api.github.com/users/nathansobo/repos","events_url":"https://api.github.com/users/nathansobo/events{/privacy}","received_events_url":"https://api.github.com/users/nathansobo/received_events","type":"User","site_admin":true},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-11-20T04:03:41Z","updated_at":"2015-11-20T04:10:44Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/atom/text-buffer/pulls/114","html_url":"https://github.com/atom/text-buffer/pull/114","diff_url":"https://github.com/atom/text-buffer/pull/114.diff","patch_url":"https://github.com/atom/text-buffer/pull/114.patch"},"body":"Having implemented a simpler binary-tree algorithm for the `MarkerIndex`, I wanted to see what we could gain by [dropping it to C++](https://github.com/atom/marker-index/pull/2). Tests of both implementations vary pretty dramatically between runs, but I'm seeing roughly the following when searching for `e` in jQuery after 6 runs of each version:\r\n\r\n| Implementation | Typical Time | Worst Time | Typical Total GC Time\r\n| ------ | ----------- | ---- | ---- |\r\n| native | 900ms | 1070ms | 90ms\r\n| JS | 1200ms | 1500ms | 180ms\r\n\r\nSo the JS version is definitely more variable, slower overall, and puts more pressure on the garbage collector. A 300-600ms improvement based on my tests. Keep in mind there's a bunch of other stuff going on in this code path, but I wanted to measure a real-world use case for this data structure anyway."},"comment":{"url":"https://api.github.com/repos/atom/text-buffer/issues/comments/158274155","html_url":"https://github.com/atom/text-buffer/pull/114#issuecomment-158274155","issue_url":"https://api.github.com/repos/atom/text-buffer/issues/114","id":158274155,"user":{"login":"nathansobo","id":1789,"avatar_url":"https://avatars.githubusercontent.com/u/1789?v=3","gravatar_id":"","url":"https://api.github.com/users/nathansobo","html_url":"https://github.com/nathansobo","followers_url":"https://api.github.com/users/nathansobo/followers","following_url":"https://api.github.com/users/nathansobo/following{/other_user}","gists_url":"https://api.github.com/users/nathansobo/gists{/gist_id}","starred_url":"https://api.github.com/users/nathansobo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathansobo/subscriptions","organizations_url":"https://api.github.com/users/nathansobo/orgs","repos_url":"https://api.github.com/users/nathansobo/repos","events_url":"https://api.github.com/users/nathansobo/events{/privacy}","received_events_url":"https://api.github.com/users/nathansobo/received_events","type":"User","site_admin":true},"created_at":"2015-11-20T04:10:44Z","updated_at":"2015-11-20T04:10:44Z","body":"@maxbrunsfeld Do you by chance know the incantation I need to give Travis to use clang to build my module instead of gcc?"}}