{"action":"created","issue":{"url":"https://api.github.com/repos/git-up/GitUp/issues/3","labels_url":"https://api.github.com/repos/git-up/GitUp/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/git-up/GitUp/issues/3/comments","events_url":"https://api.github.com/repos/git-up/GitUp/issues/3/events","html_url":"https://github.com/git-up/GitUp/pull/3","id":101876386,"number":3,"title":"Faster graph rendering for huge repos.","user":{"login":"mandrigin","id":466427,"avatar_url":"https://avatars.githubusercontent.com/u/466427?v=3","gravatar_id":"","url":"https://api.github.com/users/mandrigin","html_url":"https://github.com/mandrigin","followers_url":"https://api.github.com/users/mandrigin/followers","following_url":"https://api.github.com/users/mandrigin/following{/other_user}","gists_url":"https://api.github.com/users/mandrigin/gists{/gist_id}","starred_url":"https://api.github.com/users/mandrigin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mandrigin/subscriptions","organizations_url":"https://api.github.com/users/mandrigin/orgs","repos_url":"https://api.github.com/users/mandrigin/repos","events_url":"https://api.github.com/users/mandrigin/events{/privacy}","received_events_url":"https://api.github.com/users/mandrigin/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/git-up/GitUp/labels/enhancement","name":"enhancement","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-08-19T12:06:25Z","updated_at":"2015-08-19T17:49:07Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/git-up/GitUp/pulls/3","html_url":"https://github.com/git-up/GitUp/pull/3","diff_url":"https://github.com/git-up/GitUp/pull/3.diff","patch_url":"https://github.com/git-up/GitUp/pull/3.patch"},"body":"We have a huge repo at work (~240000 commits at the moment) and GitUp is really slow on it.\r\n\r\nWhile profiling it turns to be that GitUp makes a lot of comparisons while building an object graph.\r\n![instruments2 2015-08-19 14-05-05](https://cloud.githubusercontent.com/assets/466427/9355662/523e323a-467b-11e5-9a05-9fc1c781193a.png)\r\n\r\nI have replaced `[NSMutableArray containsObject:]` to `[NSMutableDict objectForKey:]` which is much faster (also it checks SHA strings, not objects). According to Instruments, it is not the heaviest stack trace anymore (and the app seems to be far more usable on our repo right now)."},"comment":{"url":"https://api.github.com/repos/git-up/GitUp/issues/comments/132718254","html_url":"https://github.com/git-up/GitUp/pull/3#issuecomment-132718254","issue_url":"https://api.github.com/repos/git-up/GitUp/issues/3","id":132718254,"user":{"login":"bryankeller","id":746571,"avatar_url":"https://avatars.githubusercontent.com/u/746571?v=3","gravatar_id":"","url":"https://api.github.com/users/bryankeller","html_url":"https://github.com/bryankeller","followers_url":"https://api.github.com/users/bryankeller/followers","following_url":"https://api.github.com/users/bryankeller/following{/other_user}","gists_url":"https://api.github.com/users/bryankeller/gists{/gist_id}","starred_url":"https://api.github.com/users/bryankeller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bryankeller/subscriptions","organizations_url":"https://api.github.com/users/bryankeller/orgs","repos_url":"https://api.github.com/users/bryankeller/repos","events_url":"https://api.github.com/users/bryankeller/events{/privacy}","received_events_url":"https://api.github.com/users/bryankeller/received_events","type":"User","site_admin":false},"created_at":"2015-08-19T17:49:07Z","updated_at":"2015-08-19T17:49:07Z","body":"Perhaps a separate data structure could be used to keep track of ordering, while still seeing the speed benefits from using the NSMutableDictionary?"}}