{"action":"opened","number":2990,"pull_request":{"url":"https://api.github.com/repos/dealii/dealii/pulls/2990","id":81913214,"html_url":"https://github.com/dealii/dealii/pull/2990","diff_url":"https://github.com/dealii/dealii/pull/2990.diff","patch_url":"https://github.com/dealii/dealii/pull/2990.patch","issue_url":"https://api.github.com/repos/dealii/dealii/issues/2990","number":2990,"state":"open","locked":false,"title":"Not longer use QSorted in Manifold::get_new_point()","user":{"login":"gassmoeller","id":7582930,"avatar_url":"https://avatars.githubusercontent.com/u/7582930?v=3","gravatar_id":"","url":"https://api.github.com/users/gassmoeller","html_url":"https://github.com/gassmoeller","followers_url":"https://api.github.com/users/gassmoeller/followers","following_url":"https://api.github.com/users/gassmoeller/following{/other_user}","gists_url":"https://api.github.com/users/gassmoeller/gists{/gist_id}","starred_url":"https://api.github.com/users/gassmoeller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gassmoeller/subscriptions","organizations_url":"https://api.github.com/users/gassmoeller/orgs","repos_url":"https://api.github.com/users/gassmoeller/repos","events_url":"https://api.github.com/users/gassmoeller/events{/privacy}","received_events_url":"https://api.github.com/users/gassmoeller/received_events","type":"User","site_admin":false},"body":"As mentioned in #2989 I got some interesting results when profiling one of my ASPECT models.\r\nUp to 15 % of the total runtime (in debug mode) was spent in the constructor of QSorted, and all of those calls came from the `Manifold::get_new_point` function. First I tried to optimize the constructor (see #2989), but realistically we should ask why we sort the quadrature points and weights here?\r\nI suppose it is done to make sure that quadrature points with very small weights do not suffer from a floating-point truncation of their weights. On the other hand one of the few manifolds that actually uses this function (the SphericalManifold that I used in this testcase) internally uses another cutoff to simply ignore weights smaller than 1e-10, so we do not gain much by carefully sorting the weights previously. \r\nOn the other hand this sort turns out to be expensive, because it is done so often. The attached change led to a speedup of about 40 % in a 2D release mode testcase of both my matrix assembly and my particle advection (which is effectively finding the reference coordinates of a lot of points in real space).\r\n\r\nSo I guess I would be interested to hear if there is a case where we need this sort. If not I suggest to merge this PR for a significant speedup of the SphericalManifold. If there is an important use case for other manifolds, maybe I should instead implement the change inside of a `SphericalManifold::get_new_point())` function?","created_at":"2016-08-19T01:15:29Z","updated_at":"2016-08-19T01:15:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dealii/dealii/pulls/2990/commits","review_comments_url":"https://api.github.com/repos/dealii/dealii/pulls/2990/comments","review_comment_url":"https://api.github.com/repos/dealii/dealii/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/2990/comments","statuses_url":"https://api.github.com/repos/dealii/dealii/statuses/6d35cb09d9be64cf6a28b866acede48f256dabf9","head":{"label":"gassmoeller:speedup_manifold_point_generation","ref":"speedup_manifold_point_generation","sha":"6d35cb09d9be64cf6a28b866acede48f256dabf9","user":{"login":"gassmoeller","id":7582930,"avatar_url":"https://avatars.githubusercontent.com/u/7582930?v=3","gravatar_id":"","url":"https://api.github.com/users/gassmoeller","html_url":"https://github.com/gassmoeller","followers_url":"https://api.github.com/users/gassmoeller/followers","following_url":"https://api.github.com/users/gassmoeller/following{/other_user}","gists_url":"https://api.github.com/users/gassmoeller/gists{/gist_id}","starred_url":"https://api.github.com/users/gassmoeller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gassmoeller/subscriptions","organizations_url":"https://api.github.com/users/gassmoeller/orgs","repos_url":"https://api.github.com/users/gassmoeller/repos","events_url":"https://api.github.com/users/gassmoeller/events{/privacy}","received_events_url":"https://api.github.com/users/gassmoeller/received_events","type":"User","site_admin":false},"repo":{"id":42511636,"name":"dealii","full_name":"gassmoeller/dealii","owner":{"login":"gassmoeller","id":7582930,"avatar_url":"https://avatars.githubusercontent.com/u/7582930?v=3","gravatar_id":"","url":"https://api.github.com/users/gassmoeller","html_url":"https://github.com/gassmoeller","followers_url":"https://api.github.com/users/gassmoeller/followers","following_url":"https://api.github.com/users/gassmoeller/following{/other_user}","gists_url":"https://api.github.com/users/gassmoeller/gists{/gist_id}","starred_url":"https://api.github.com/users/gassmoeller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gassmoeller/subscriptions","organizations_url":"https://api.github.com/users/gassmoeller/orgs","repos_url":"https://api.github.com/users/gassmoeller/repos","events_url":"https://api.github.com/users/gassmoeller/events{/privacy}","received_events_url":"https://api.github.com/users/gassmoeller/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gassmoeller/dealii","description":"The development repository for the deal.II finite element library.","fork":true,"url":"https://api.github.com/repos/gassmoeller/dealii","forks_url":"https://api.github.com/repos/gassmoeller/dealii/forks","keys_url":"https://api.github.com/repos/gassmoeller/dealii/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gassmoeller/dealii/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gassmoeller/dealii/teams","hooks_url":"https://api.github.com/repos/gassmoeller/dealii/hooks","issue_events_url":"https://api.github.com/repos/gassmoeller/dealii/issues/events{/number}","events_url":"https://api.github.com/repos/gassmoeller/dealii/events","assignees_url":"https://api.github.com/repos/gassmoeller/dealii/assignees{/user}","branches_url":"https://api.github.com/repos/gassmoeller/dealii/branches{/branch}","tags_url":"https://api.github.com/repos/gassmoeller/dealii/tags","blobs_url":"https://api.github.com/repos/gassmoeller/dealii/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gassmoeller/dealii/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gassmoeller/dealii/git/refs{/sha}","trees_url":"https://api.github.com/repos/gassmoeller/dealii/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gassmoeller/dealii/statuses/{sha}","languages_url":"https://api.github.com/repos/gassmoeller/dealii/languages","stargazers_url":"https://api.github.com/repos/gassmoeller/dealii/stargazers","contributors_url":"https://api.github.com/repos/gassmoeller/dealii/contributors","subscribers_url":"https://api.github.com/repos/gassmoeller/dealii/subscribers","subscription_url":"https://api.github.com/repos/gassmoeller/dealii/subscription","commits_url":"https://api.github.com/repos/gassmoeller/dealii/commits{/sha}","git_commits_url":"https://api.github.com/repos/gassmoeller/dealii/git/commits{/sha}","comments_url":"https://api.github.com/repos/gassmoeller/dealii/comments{/number}","issue_comment_url":"https://api.github.com/repos/gassmoeller/dealii/issues/comments{/number}","contents_url":"https://api.github.com/repos/gassmoeller/dealii/contents/{+path}","compare_url":"https://api.github.com/repos/gassmoeller/dealii/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gassmoeller/dealii/merges","archive_url":"https://api.github.com/repos/gassmoeller/dealii/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gassmoeller/dealii/downloads","issues_url":"https://api.github.com/repos/gassmoeller/dealii/issues{/number}","pulls_url":"https://api.github.com/repos/gassmoeller/dealii/pulls{/number}","milestones_url":"https://api.github.com/repos/gassmoeller/dealii/milestones{/number}","notifications_url":"https://api.github.com/repos/gassmoeller/dealii/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gassmoeller/dealii/labels{/name}","releases_url":"https://api.github.com/repos/gassmoeller/dealii/releases{/id}","deployments_url":"https://api.github.com/repos/gassmoeller/dealii/deployments","created_at":"2015-09-15T10:33:38Z","updated_at":"2015-09-15T10:34:47Z","pushed_at":"2016-08-19T00:56:14Z","git_url":"git://github.com/gassmoeller/dealii.git","ssh_url":"git@github.com:gassmoeller/dealii.git","clone_url":"https://github.com/gassmoeller/dealii.git","svn_url":"https://github.com/gassmoeller/dealii","homepage":"http://www.dealii.org/","size":145564,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"dealii:master","ref":"master","sha":"674234a2d09776ee18e6b1a8145677415d8f91fa","user":{"login":"dealii","id":7506070,"avatar_url":"https://avatars.githubusercontent.com/u/7506070?v=3","gravatar_id":"","url":"https://api.github.com/users/dealii","html_url":"https://github.com/dealii","followers_url":"https://api.github.com/users/dealii/followers","following_url":"https://api.github.com/users/dealii/following{/other_user}","gists_url":"https://api.github.com/users/dealii/gists{/gist_id}","starred_url":"https://api.github.com/users/dealii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dealii/subscriptions","organizations_url":"https://api.github.com/users/dealii/orgs","repos_url":"https://api.github.com/users/dealii/repos","events_url":"https://api.github.com/users/dealii/events{/privacy}","received_events_url":"https://api.github.com/users/dealii/received_events","type":"Organization","site_admin":false},"repo":{"id":21943980,"name":"dealii","full_name":"dealii/dealii","owner":{"login":"dealii","id":7506070,"avatar_url":"https://avatars.githubusercontent.com/u/7506070?v=3","gravatar_id":"","url":"https://api.github.com/users/dealii","html_url":"https://github.com/dealii","followers_url":"https://api.github.com/users/dealii/followers","following_url":"https://api.github.com/users/dealii/following{/other_user}","gists_url":"https://api.github.com/users/dealii/gists{/gist_id}","starred_url":"https://api.github.com/users/dealii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dealii/subscriptions","organizations_url":"https://api.github.com/users/dealii/orgs","repos_url":"https://api.github.com/users/dealii/repos","events_url":"https://api.github.com/users/dealii/events{/privacy}","received_events_url":"https://api.github.com/users/dealii/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dealii/dealii","description":"The development repository for the deal.II finite element library.","fork":false,"url":"https://api.github.com/repos/dealii/dealii","forks_url":"https://api.github.com/repos/dealii/dealii/forks","keys_url":"https://api.github.com/repos/dealii/dealii/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dealii/dealii/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dealii/dealii/teams","hooks_url":"https://api.github.com/repos/dealii/dealii/hooks","issue_events_url":"https://api.github.com/repos/dealii/dealii/issues/events{/number}","events_url":"https://api.github.com/repos/dealii/dealii/events","assignees_url":"https://api.github.com/repos/dealii/dealii/assignees{/user}","branches_url":"https://api.github.com/repos/dealii/dealii/branches{/branch}","tags_url":"https://api.github.com/repos/dealii/dealii/tags","blobs_url":"https://api.github.com/repos/dealii/dealii/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dealii/dealii/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dealii/dealii/git/refs{/sha}","trees_url":"https://api.github.com/repos/dealii/dealii/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dealii/dealii/statuses/{sha}","languages_url":"https://api.github.com/repos/dealii/dealii/languages","stargazers_url":"https://api.github.com/repos/dealii/dealii/stargazers","contributors_url":"https://api.github.com/repos/dealii/dealii/contributors","subscribers_url":"https://api.github.com/repos/dealii/dealii/subscribers","subscription_url":"https://api.github.com/repos/dealii/dealii/subscription","commits_url":"https://api.github.com/repos/dealii/dealii/commits{/sha}","git_commits_url":"https://api.github.com/repos/dealii/dealii/git/commits{/sha}","comments_url":"https://api.github.com/repos/dealii/dealii/comments{/number}","issue_comment_url":"https://api.github.com/repos/dealii/dealii/issues/comments{/number}","contents_url":"https://api.github.com/repos/dealii/dealii/contents/{+path}","compare_url":"https://api.github.com/repos/dealii/dealii/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dealii/dealii/merges","archive_url":"https://api.github.com/repos/dealii/dealii/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dealii/dealii/downloads","issues_url":"https://api.github.com/repos/dealii/dealii/issues{/number}","pulls_url":"https://api.github.com/repos/dealii/dealii/pulls{/number}","milestones_url":"https://api.github.com/repos/dealii/dealii/milestones{/number}","notifications_url":"https://api.github.com/repos/dealii/dealii/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dealii/dealii/labels{/name}","releases_url":"https://api.github.com/repos/dealii/dealii/releases{/id}","deployments_url":"https://api.github.com/repos/dealii/dealii/deployments","created_at":"2014-07-17T14:00:26Z","updated_at":"2016-08-14T06:42:22Z","pushed_at":"2016-08-19T01:15:29Z","git_url":"git://github.com/dealii/dealii.git","ssh_url":"git@github.com:dealii/dealii.git","clone_url":"https://github.com/dealii/dealii.git","svn_url":"https://github.com/dealii/dealii","homepage":"http://www.dealii.org/","size":166586,"stargazers_count":165,"watchers_count":165,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":181,"mirror_url":null,"open_issues_count":179,"forks":181,"open_issues":179,"watchers":165,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dealii/dealii/pulls/2990"},"html":{"href":"https://github.com/dealii/dealii/pull/2990"},"issue":{"href":"https://api.github.com/repos/dealii/dealii/issues/2990"},"comments":{"href":"https://api.github.com/repos/dealii/dealii/issues/2990/comments"},"review_comments":{"href":"https://api.github.com/repos/dealii/dealii/pulls/2990/comments"},"review_comment":{"href":"https://api.github.com/repos/dealii/dealii/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dealii/dealii/pulls/2990/commits"},"statuses":{"href":"https://api.github.com/repos/dealii/dealii/statuses/6d35cb09d9be64cf6a28b866acede48f256dabf9"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":7,"deletions":8,"changed_files":1}}
{"actor":{"display_login":"gassmoeller"}}