{"action":"created","comment":{"url":"https://api.github.com/repos/git-up/GitUp/pulls/comments/37598772","id":37598772,"diff_hunk":"@@ -79,6 +79,9 @@\n @interface GCMultipleCommitsRepositoryTests : GCMultipleCommitsRepositoryTestCase\n @end\n \n+@interface GCUniqueCommitCollectionTests : GCMultipleCommitsRepositoryTestCase","path":"Core/GCTestCase.h","position":4,"original_position":4,"commit_id":"7fe23d0bb701d9ea414290a042aacf2a8c2e572b","original_commit_id":"7fe23d0bb701d9ea414290a042aacf2a8c2e572b","user":{"login":"swisspol","id":627915,"avatar_url":"https://avatars.githubusercontent.com/u/627915?v=3","gravatar_id":"","url":"https://api.github.com/users/swisspol","html_url":"https://github.com/swisspol","followers_url":"https://api.github.com/users/swisspol/followers","following_url":"https://api.github.com/users/swisspol/following{/other_user}","gists_url":"https://api.github.com/users/swisspol/gists{/gist_id}","starred_url":"https://api.github.com/users/swisspol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swisspol/subscriptions","organizations_url":"https://api.github.com/users/swisspol/orgs","repos_url":"https://api.github.com/users/swisspol/repos","events_url":"https://api.github.com/users/swisspol/events{/privacy}","received_events_url":"https://api.github.com/users/swisspol/received_events","type":"User","site_admin":false},"body":"You don't need a new top-level test class. You only need a category on `GCMultipleCommitsRepositoryTestCase`.","created_at":"2015-08-21T01:17:49Z","updated_at":"2015-08-21T01:17:49Z","html_url":"https://github.com/git-up/GitUp/pull/3#discussion_r37598772","pull_request_url":"https://api.github.com/repos/git-up/GitUp/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/comments/37598772"},"html":{"href":"https://github.com/git-up/GitUp/pull/3#discussion_r37598772"},"pull_request":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/git-up/GitUp/pulls/3","id":42806417,"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","issue_url":"https://api.github.com/repos/git-up/GitUp/issues/3","number":3,"state":"open","locked":false,"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},"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).","created_at":"2015-08-19T12:06:25Z","updated_at":"2015-08-21T01:17:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1587af74774613e86575c37b7560ab93f785927c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/git-up/GitUp/pulls/3/commits","review_comments_url":"https://api.github.com/repos/git-up/GitUp/pulls/3/comments","review_comment_url":"https://api.github.com/repos/git-up/GitUp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/git-up/GitUp/issues/3/comments","statuses_url":"https://api.github.com/repos/git-up/GitUp/statuses/7fe23d0bb701d9ea414290a042aacf2a8c2e572b","head":{"label":"mandrigin:master","ref":"master","sha":"7fe23d0bb701d9ea414290a042aacf2a8c2e572b","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},"repo":{"id":41028451,"name":"GitUp","full_name":"mandrigin/GitUp","owner":{"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},"private":false,"html_url":"https://github.com/mandrigin/GitUp","description":"The Git interface you've been missing all your life has finally arrived.","fork":true,"url":"https://api.github.com/repos/mandrigin/GitUp","forks_url":"https://api.github.com/repos/mandrigin/GitUp/forks","keys_url":"https://api.github.com/repos/mandrigin/GitUp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mandrigin/GitUp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mandrigin/GitUp/teams","hooks_url":"https://api.github.com/repos/mandrigin/GitUp/hooks","issue_events_url":"https://api.github.com/repos/mandrigin/GitUp/issues/events{/number}","events_url":"https://api.github.com/repos/mandrigin/GitUp/events","assignees_url":"https://api.github.com/repos/mandrigin/GitUp/assignees{/user}","branches_url":"https://api.github.com/repos/mandrigin/GitUp/branches{/branch}","tags_url":"https://api.github.com/repos/mandrigin/GitUp/tags","blobs_url":"https://api.github.com/repos/mandrigin/GitUp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mandrigin/GitUp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mandrigin/GitUp/git/refs{/sha}","trees_url":"https://api.github.com/repos/mandrigin/GitUp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mandrigin/GitUp/statuses/{sha}","languages_url":"https://api.github.com/repos/mandrigin/GitUp/languages","stargazers_url":"https://api.github.com/repos/mandrigin/GitUp/stargazers","contributors_url":"https://api.github.com/repos/mandrigin/GitUp/contributors","subscribers_url":"https://api.github.com/repos/mandrigin/GitUp/subscribers","subscription_url":"https://api.github.com/repos/mandrigin/GitUp/subscription","commits_url":"https://api.github.com/repos/mandrigin/GitUp/commits{/sha}","git_commits_url":"https://api.github.com/repos/mandrigin/GitUp/git/commits{/sha}","comments_url":"https://api.github.com/repos/mandrigin/GitUp/comments{/number}","issue_comment_url":"https://api.github.com/repos/mandrigin/GitUp/issues/comments{/number}","contents_url":"https://api.github.com/repos/mandrigin/GitUp/contents/{+path}","compare_url":"https://api.github.com/repos/mandrigin/GitUp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mandrigin/GitUp/merges","archive_url":"https://api.github.com/repos/mandrigin/GitUp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mandrigin/GitUp/downloads","issues_url":"https://api.github.com/repos/mandrigin/GitUp/issues{/number}","pulls_url":"https://api.github.com/repos/mandrigin/GitUp/pulls{/number}","milestones_url":"https://api.github.com/repos/mandrigin/GitUp/milestones{/number}","notifications_url":"https://api.github.com/repos/mandrigin/GitUp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mandrigin/GitUp/labels{/name}","releases_url":"https://api.github.com/repos/mandrigin/GitUp/releases{/id}","created_at":"2015-08-19T10:45:09Z","updated_at":"2015-08-19T10:45:11Z","pushed_at":"2015-08-20T19:41:22Z","git_url":"git://github.com/mandrigin/GitUp.git","ssh_url":"git@github.com:mandrigin/GitUp.git","clone_url":"https://github.com/mandrigin/GitUp.git","svn_url":"https://github.com/mandrigin/GitUp","homepage":"http://gitup.co","size":4291,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"git-up:master","ref":"master","sha":"c13ed4d8b6d3d0b66759fe8d176df604e2d96ff7","user":{"login":"git-up","id":10783260,"avatar_url":"https://avatars.githubusercontent.com/u/10783260?v=3","gravatar_id":"","url":"https://api.github.com/users/git-up","html_url":"https://github.com/git-up","followers_url":"https://api.github.com/users/git-up/followers","following_url":"https://api.github.com/users/git-up/following{/other_user}","gists_url":"https://api.github.com/users/git-up/gists{/gist_id}","starred_url":"https://api.github.com/users/git-up/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/git-up/subscriptions","organizations_url":"https://api.github.com/users/git-up/orgs","repos_url":"https://api.github.com/users/git-up/repos","events_url":"https://api.github.com/users/git-up/events{/privacy}","received_events_url":"https://api.github.com/users/git-up/received_events","type":"Organization","site_admin":false},"repo":{"id":40638363,"name":"GitUp","full_name":"git-up/GitUp","owner":{"login":"git-up","id":10783260,"avatar_url":"https://avatars.githubusercontent.com/u/10783260?v=3","gravatar_id":"","url":"https://api.github.com/users/git-up","html_url":"https://github.com/git-up","followers_url":"https://api.github.com/users/git-up/followers","following_url":"https://api.github.com/users/git-up/following{/other_user}","gists_url":"https://api.github.com/users/git-up/gists{/gist_id}","starred_url":"https://api.github.com/users/git-up/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/git-up/subscriptions","organizations_url":"https://api.github.com/users/git-up/orgs","repos_url":"https://api.github.com/users/git-up/repos","events_url":"https://api.github.com/users/git-up/events{/privacy}","received_events_url":"https://api.github.com/users/git-up/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/git-up/GitUp","description":"The Git interface you've been missing all your life has finally arrived.","fork":false,"url":"https://api.github.com/repos/git-up/GitUp","forks_url":"https://api.github.com/repos/git-up/GitUp/forks","keys_url":"https://api.github.com/repos/git-up/GitUp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/git-up/GitUp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/git-up/GitUp/teams","hooks_url":"https://api.github.com/repos/git-up/GitUp/hooks","issue_events_url":"https://api.github.com/repos/git-up/GitUp/issues/events{/number}","events_url":"https://api.github.com/repos/git-up/GitUp/events","assignees_url":"https://api.github.com/repos/git-up/GitUp/assignees{/user}","branches_url":"https://api.github.com/repos/git-up/GitUp/branches{/branch}","tags_url":"https://api.github.com/repos/git-up/GitUp/tags","blobs_url":"https://api.github.com/repos/git-up/GitUp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/git-up/GitUp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/git-up/GitUp/git/refs{/sha}","trees_url":"https://api.github.com/repos/git-up/GitUp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/git-up/GitUp/statuses/{sha}","languages_url":"https://api.github.com/repos/git-up/GitUp/languages","stargazers_url":"https://api.github.com/repos/git-up/GitUp/stargazers","contributors_url":"https://api.github.com/repos/git-up/GitUp/contributors","subscribers_url":"https://api.github.com/repos/git-up/GitUp/subscribers","subscription_url":"https://api.github.com/repos/git-up/GitUp/subscription","commits_url":"https://api.github.com/repos/git-up/GitUp/commits{/sha}","git_commits_url":"https://api.github.com/repos/git-up/GitUp/git/commits{/sha}","comments_url":"https://api.github.com/repos/git-up/GitUp/comments{/number}","issue_comment_url":"https://api.github.com/repos/git-up/GitUp/issues/comments{/number}","contents_url":"https://api.github.com/repos/git-up/GitUp/contents/{+path}","compare_url":"https://api.github.com/repos/git-up/GitUp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/git-up/GitUp/merges","archive_url":"https://api.github.com/repos/git-up/GitUp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/git-up/GitUp/downloads","issues_url":"https://api.github.com/repos/git-up/GitUp/issues{/number}","pulls_url":"https://api.github.com/repos/git-up/GitUp/pulls{/number}","milestones_url":"https://api.github.com/repos/git-up/GitUp/milestones{/number}","notifications_url":"https://api.github.com/repos/git-up/GitUp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/git-up/GitUp/labels{/name}","releases_url":"https://api.github.com/repos/git-up/GitUp/releases{/id}","created_at":"2015-08-13T04:11:10Z","updated_at":"2015-08-21T01:09:45Z","pushed_at":"2015-08-20T19:41:24Z","git_url":"git://github.com/git-up/GitUp.git","ssh_url":"git@github.com:git-up/GitUp.git","clone_url":"https://github.com/git-up/GitUp.git","svn_url":"https://github.com/git-up/GitUp","homepage":"http://gitup.co","size":4590,"stargazers_count":1269,"watchers_count":1269,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":3,"forks":41,"open_issues":3,"watchers":1269,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/3"},"html":{"href":"https://github.com/git-up/GitUp/pull/3"},"issue":{"href":"https://api.github.com/repos/git-up/GitUp/issues/3"},"comments":{"href":"https://api.github.com/repos/git-up/GitUp/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/git-up/GitUp/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/git-up/GitUp/statuses/7fe23d0bb701d9ea414290a042aacf2a8c2e572b"}}}}