{"action":"closed","number":292,"pull_request":{"url":"https://api.github.com/repos/gap-system/gap/pulls/292","id":47678641,"html_url":"https://github.com/gap-system/gap/pull/292","diff_url":"https://github.com/gap-system/gap/pull/292.diff","patch_url":"https://github.com/gap-system/gap/pull/292.patch","issue_url":"https://api.github.com/repos/gap-system/gap/issues/292","number":292,"state":"closed","locked":false,"title":"Speeding up loops over iterators","user":{"login":"frankluebeck","id":6473002,"avatar_url":"https://avatars.githubusercontent.com/u/6473002?v=3","gravatar_id":"","url":"https://api.github.com/users/frankluebeck","html_url":"https://github.com/frankluebeck","followers_url":"https://api.github.com/users/frankluebeck/followers","following_url":"https://api.github.com/users/frankluebeck/following{/other_user}","gists_url":"https://api.github.com/users/frankluebeck/gists{/gist_id}","starred_url":"https://api.github.com/users/frankluebeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankluebeck/subscriptions","organizations_url":"https://api.github.com/users/frankluebeck/orgs","repos_url":"https://api.github.com/users/frankluebeck/repos","events_url":"https://api.github.com/users/frankluebeck/events{/privacy}","received_events_url":"https://api.github.com/users/frankluebeck/received_events","type":"User","site_admin":false},"body":"In loops over iterators which are not lists the method selection for\r\nIsDoneIterator and NextIterator can lead to considerable overhead.\r\n\r\nThis patch introduces a filter `IsStandardIterator` which means that\r\nthe iterator is a component object with components .IsDoneIterator\r\nand .NextIterator which provide the methods with the same name.\r\n\r\nIn the kernel we use these functions directly instead of the generic\r\noperations for iterators in `IsStandardIterator`.\r\n\r\nDocumentation for `IsStandardIterator` is included. All iterators\r\nconstructed by `IteratorByFunctions` are in `IsStandardIterator`.\r\n\r\nExamples: Looping over GF(1000003) becomes 25% faster, looping over\r\nSymmetricGroup(11) about 15% faster on my system. Of course, the\r\nadvantage is bigger if NextIterator is cheaper.","created_at":"2015-10-14T15:57:52Z","updated_at":"2015-10-15T11:44:22Z","closed_at":"2015-10-15T11:44:22Z","merged_at":"2015-10-15T11:44:22Z","merge_commit_sha":"e1cb3c24a94b878cb83b82355af0e45430817380","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/gap-system/gap/pulls/292/commits","review_comments_url":"https://api.github.com/repos/gap-system/gap/pulls/292/comments","review_comment_url":"https://api.github.com/repos/gap-system/gap/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gap-system/gap/issues/292/comments","statuses_url":"https://api.github.com/repos/gap-system/gap/statuses/95ae6bb56d718ddc35f48b96742b451458d6fa09","head":{"label":"frankluebeck:fl-iterator-speed","ref":"fl-iterator-speed","sha":"95ae6bb56d718ddc35f48b96742b451458d6fa09","user":{"login":"frankluebeck","id":6473002,"avatar_url":"https://avatars.githubusercontent.com/u/6473002?v=3","gravatar_id":"","url":"https://api.github.com/users/frankluebeck","html_url":"https://github.com/frankluebeck","followers_url":"https://api.github.com/users/frankluebeck/followers","following_url":"https://api.github.com/users/frankluebeck/following{/other_user}","gists_url":"https://api.github.com/users/frankluebeck/gists{/gist_id}","starred_url":"https://api.github.com/users/frankluebeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankluebeck/subscriptions","organizations_url":"https://api.github.com/users/frankluebeck/orgs","repos_url":"https://api.github.com/users/frankluebeck/repos","events_url":"https://api.github.com/users/frankluebeck/events{/privacy}","received_events_url":"https://api.github.com/users/frankluebeck/received_events","type":"User","site_admin":false},"repo":{"id":32322163,"name":"gap","full_name":"frankluebeck/gap","owner":{"login":"frankluebeck","id":6473002,"avatar_url":"https://avatars.githubusercontent.com/u/6473002?v=3","gravatar_id":"","url":"https://api.github.com/users/frankluebeck","html_url":"https://github.com/frankluebeck","followers_url":"https://api.github.com/users/frankluebeck/followers","following_url":"https://api.github.com/users/frankluebeck/following{/other_user}","gists_url":"https://api.github.com/users/frankluebeck/gists{/gist_id}","starred_url":"https://api.github.com/users/frankluebeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankluebeck/subscriptions","organizations_url":"https://api.github.com/users/frankluebeck/orgs","repos_url":"https://api.github.com/users/frankluebeck/repos","events_url":"https://api.github.com/users/frankluebeck/events{/privacy}","received_events_url":"https://api.github.com/users/frankluebeck/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/frankluebeck/gap","description":"GAP - Groups, Algorithms, Programming - a System for Computational Discrete Algebra","fork":true,"url":"https://api.github.com/repos/frankluebeck/gap","forks_url":"https://api.github.com/repos/frankluebeck/gap/forks","keys_url":"https://api.github.com/repos/frankluebeck/gap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/frankluebeck/gap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/frankluebeck/gap/teams","hooks_url":"https://api.github.com/repos/frankluebeck/gap/hooks","issue_events_url":"https://api.github.com/repos/frankluebeck/gap/issues/events{/number}","events_url":"https://api.github.com/repos/frankluebeck/gap/events","assignees_url":"https://api.github.com/repos/frankluebeck/gap/assignees{/user}","branches_url":"https://api.github.com/repos/frankluebeck/gap/branches{/branch}","tags_url":"https://api.github.com/repos/frankluebeck/gap/tags","blobs_url":"https://api.github.com/repos/frankluebeck/gap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/frankluebeck/gap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/frankluebeck/gap/git/refs{/sha}","trees_url":"https://api.github.com/repos/frankluebeck/gap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/frankluebeck/gap/statuses/{sha}","languages_url":"https://api.github.com/repos/frankluebeck/gap/languages","stargazers_url":"https://api.github.com/repos/frankluebeck/gap/stargazers","contributors_url":"https://api.github.com/repos/frankluebeck/gap/contributors","subscribers_url":"https://api.github.com/repos/frankluebeck/gap/subscribers","subscription_url":"https://api.github.com/repos/frankluebeck/gap/subscription","commits_url":"https://api.github.com/repos/frankluebeck/gap/commits{/sha}","git_commits_url":"https://api.github.com/repos/frankluebeck/gap/git/commits{/sha}","comments_url":"https://api.github.com/repos/frankluebeck/gap/comments{/number}","issue_comment_url":"https://api.github.com/repos/frankluebeck/gap/issues/comments{/number}","contents_url":"https://api.github.com/repos/frankluebeck/gap/contents/{+path}","compare_url":"https://api.github.com/repos/frankluebeck/gap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/frankluebeck/gap/merges","archive_url":"https://api.github.com/repos/frankluebeck/gap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/frankluebeck/gap/downloads","issues_url":"https://api.github.com/repos/frankluebeck/gap/issues{/number}","pulls_url":"https://api.github.com/repos/frankluebeck/gap/pulls{/number}","milestones_url":"https://api.github.com/repos/frankluebeck/gap/milestones{/number}","notifications_url":"https://api.github.com/repos/frankluebeck/gap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/frankluebeck/gap/labels{/name}","releases_url":"https://api.github.com/repos/frankluebeck/gap/releases{/id}","created_at":"2015-03-16T12:04:23Z","updated_at":"2015-05-05T13:56:50Z","pushed_at":"2015-10-14T15:41:01Z","git_url":"git://github.com/frankluebeck/gap.git","ssh_url":"git@github.com:frankluebeck/gap.git","clone_url":"https://github.com/frankluebeck/gap.git","svn_url":"https://github.com/frankluebeck/gap","homepage":"http://www.gap-system.org","size":414914,"stargazers_count":0,"watchers_count":0,"language":"GAP","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"gap-system:master","ref":"master","sha":"6638710c81dfa407c8b9faae8be67b0f019fe4f0","user":{"login":"gap-system","id":5344223,"avatar_url":"https://avatars.githubusercontent.com/u/5344223?v=3","gravatar_id":"","url":"https://api.github.com/users/gap-system","html_url":"https://github.com/gap-system","followers_url":"https://api.github.com/users/gap-system/followers","following_url":"https://api.github.com/users/gap-system/following{/other_user}","gists_url":"https://api.github.com/users/gap-system/gists{/gist_id}","starred_url":"https://api.github.com/users/gap-system/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gap-system/subscriptions","organizations_url":"https://api.github.com/users/gap-system/orgs","repos_url":"https://api.github.com/users/gap-system/repos","events_url":"https://api.github.com/users/gap-system/events{/privacy}","received_events_url":"https://api.github.com/users/gap-system/received_events","type":"Organization","site_admin":false},"repo":{"id":31270208,"name":"gap","full_name":"gap-system/gap","owner":{"login":"gap-system","id":5344223,"avatar_url":"https://avatars.githubusercontent.com/u/5344223?v=3","gravatar_id":"","url":"https://api.github.com/users/gap-system","html_url":"https://github.com/gap-system","followers_url":"https://api.github.com/users/gap-system/followers","following_url":"https://api.github.com/users/gap-system/following{/other_user}","gists_url":"https://api.github.com/users/gap-system/gists{/gist_id}","starred_url":"https://api.github.com/users/gap-system/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gap-system/subscriptions","organizations_url":"https://api.github.com/users/gap-system/orgs","repos_url":"https://api.github.com/users/gap-system/repos","events_url":"https://api.github.com/users/gap-system/events{/privacy}","received_events_url":"https://api.github.com/users/gap-system/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gap-system/gap","description":"Main development repository for GAP - Groups, Algorithms, Programming, a System for Computational Discrete Algebra","fork":false,"url":"https://api.github.com/repos/gap-system/gap","forks_url":"https://api.github.com/repos/gap-system/gap/forks","keys_url":"https://api.github.com/repos/gap-system/gap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gap-system/gap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gap-system/gap/teams","hooks_url":"https://api.github.com/repos/gap-system/gap/hooks","issue_events_url":"https://api.github.com/repos/gap-system/gap/issues/events{/number}","events_url":"https://api.github.com/repos/gap-system/gap/events","assignees_url":"https://api.github.com/repos/gap-system/gap/assignees{/user}","branches_url":"https://api.github.com/repos/gap-system/gap/branches{/branch}","tags_url":"https://api.github.com/repos/gap-system/gap/tags","blobs_url":"https://api.github.com/repos/gap-system/gap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gap-system/gap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gap-system/gap/git/refs{/sha}","trees_url":"https://api.github.com/repos/gap-system/gap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gap-system/gap/statuses/{sha}","languages_url":"https://api.github.com/repos/gap-system/gap/languages","stargazers_url":"https://api.github.com/repos/gap-system/gap/stargazers","contributors_url":"https://api.github.com/repos/gap-system/gap/contributors","subscribers_url":"https://api.github.com/repos/gap-system/gap/subscribers","subscription_url":"https://api.github.com/repos/gap-system/gap/subscription","commits_url":"https://api.github.com/repos/gap-system/gap/commits{/sha}","git_commits_url":"https://api.github.com/repos/gap-system/gap/git/commits{/sha}","comments_url":"https://api.github.com/repos/gap-system/gap/comments{/number}","issue_comment_url":"https://api.github.com/repos/gap-system/gap/issues/comments{/number}","contents_url":"https://api.github.com/repos/gap-system/gap/contents/{+path}","compare_url":"https://api.github.com/repos/gap-system/gap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gap-system/gap/merges","archive_url":"https://api.github.com/repos/gap-system/gap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gap-system/gap/downloads","issues_url":"https://api.github.com/repos/gap-system/gap/issues{/number}","pulls_url":"https://api.github.com/repos/gap-system/gap/pulls{/number}","milestones_url":"https://api.github.com/repos/gap-system/gap/milestones{/number}","notifications_url":"https://api.github.com/repos/gap-system/gap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gap-system/gap/labels{/name}","releases_url":"https://api.github.com/repos/gap-system/gap/releases{/id}","created_at":"2015-02-24T16:47:50Z","updated_at":"2015-10-09T09:38:17Z","pushed_at":"2015-10-15T11:44:22Z","git_url":"git://github.com/gap-system/gap.git","ssh_url":"git@github.com:gap-system/gap.git","clone_url":"https://github.com/gap-system/gap.git","svn_url":"https://github.com/gap-system/gap","homepage":"http://www.gap-system.org","size":419061,"stargazers_count":43,"watchers_count":43,"language":"GAP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":70,"forks":24,"open_issues":70,"watchers":43,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gap-system/gap/pulls/292"},"html":{"href":"https://github.com/gap-system/gap/pull/292"},"issue":{"href":"https://api.github.com/repos/gap-system/gap/issues/292"},"comments":{"href":"https://api.github.com/repos/gap-system/gap/issues/292/comments"},"review_comments":{"href":"https://api.github.com/repos/gap-system/gap/pulls/292/comments"},"review_comment":{"href":"https://api.github.com/repos/gap-system/gap/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gap-system/gap/pulls/292/commits"},"statuses":{"href":"https://api.github.com/repos/gap-system/gap/statuses/95ae6bb56d718ddc35f48b96742b451458d6fa09"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"alex-konovalov","id":5751387,"avatar_url":"https://avatars.githubusercontent.com/u/5751387?v=3","gravatar_id":"","url":"https://api.github.com/users/alex-konovalov","html_url":"https://github.com/alex-konovalov","followers_url":"https://api.github.com/users/alex-konovalov/followers","following_url":"https://api.github.com/users/alex-konovalov/following{/other_user}","gists_url":"https://api.github.com/users/alex-konovalov/gists{/gist_id}","starred_url":"https://api.github.com/users/alex-konovalov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex-konovalov/subscriptions","organizations_url":"https://api.github.com/users/alex-konovalov/orgs","repos_url":"https://api.github.com/users/alex-konovalov/repos","events_url":"https://api.github.com/users/alex-konovalov/events{/privacy}","received_events_url":"https://api.github.com/users/alex-konovalov/received_events","type":"User","site_admin":false},"comments":3,"review_comments":1,"commits":1,"additions":53,"deletions":7,"changed_files":3}}