{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/113","repository_url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl","labels_url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/113/labels{/name}","comments_url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/113/comments","events_url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/113/events","html_url":"https://github.com/JuliaGizmos/Reactive.jl/pull/113","id":189714567,"number":113,"title":"Use an action queue/set to ensure actions are performed in the correct order and aren't repeated","user":{"login":"JobJob","id":854183,"avatar_url":"https://avatars.githubusercontent.com/u/854183?v=3","gravatar_id":"","url":"https://api.github.com/users/JobJob","html_url":"https://github.com/JobJob","followers_url":"https://api.github.com/users/JobJob/followers","following_url":"https://api.github.com/users/JobJob/following{/other_user}","gists_url":"https://api.github.com/users/JobJob/gists{/gist_id}","starred_url":"https://api.github.com/users/JobJob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JobJob/subscriptions","organizations_url":"https://api.github.com/users/JobJob/orgs","repos_url":"https://api.github.com/users/JobJob/repos","events_url":"https://api.github.com/users/JobJob/events{/privacy}","received_events_url":"https://api.github.com/users/JobJob/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-11-16T14:09:22Z","updated_at":"2016-12-13T12:27:09Z","closed_at":"2016-12-13T07:20:43Z","pull_request":{"url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/pulls/113","html_url":"https://github.com/JuliaGizmos/Reactive.jl/pull/113","diff_url":"https://github.com/JuliaGizmos/Reactive.jl/pull/113.diff","patch_url":"https://github.com/JuliaGizmos/Reactive.jl/pull/113.patch"},"body":"Instead of performing actions attached to a node as soon as a new value is sent to it, add the actions to an ordered set `action_queue` for the current `push!` message, keyed (de-duplicated) using the recipient node. This ensures that actions that would previously have been performed twice, or performed once before all the inputs to the action had updated (and ignored later after they had all updated due to the `timestep` mechanism), will be performed once and at the correct time, i.e. after all their inputs have updated for this `push!` message.\r\n\r\nEssentially causes the Signal graph to be traversed breadth first, rather than the previous depth first.\r\n\r\nFixes #101"},"comment":{"url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/comments/266726074","html_url":"https://github.com/JuliaGizmos/Reactive.jl/pull/113#issuecomment-266726074","issue_url":"https://api.github.com/repos/JuliaGizmos/Reactive.jl/issues/113","id":266726074,"user":{"login":"SimonDanisch","id":1010467,"avatar_url":"https://avatars.githubusercontent.com/u/1010467?v=3","gravatar_id":"","url":"https://api.github.com/users/SimonDanisch","html_url":"https://github.com/SimonDanisch","followers_url":"https://api.github.com/users/SimonDanisch/followers","following_url":"https://api.github.com/users/SimonDanisch/following{/other_user}","gists_url":"https://api.github.com/users/SimonDanisch/gists{/gist_id}","starred_url":"https://api.github.com/users/SimonDanisch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SimonDanisch/subscriptions","organizations_url":"https://api.github.com/users/SimonDanisch/orgs","repos_url":"https://api.github.com/users/SimonDanisch/repos","events_url":"https://api.github.com/users/SimonDanisch/events{/privacy}","received_events_url":"https://api.github.com/users/SimonDanisch/received_events","type":"User","site_admin":false},"created_at":"2016-12-13T12:27:09Z","updated_at":"2016-12-13T12:27:09Z","body":"uh, results look pretty bad... In my simple benchmark it was a 7x slow down before this PR.\r\nNow it's 70x slow down.\r\nMost time seems to be spent in: https://github.com/JuliaGizmos/Reactive.jl/blob/master/src/core.jl#L210\r\nBut I guess one could optimize the implementation a bit?\r\nI'm on a pretty beefy machine right now and I don't have any GLVisualize benchmark pushing Reactive to the extreme so I can't really judge the impact on that right now.\r\n"}}
{"actor":{"display_login":"SimonDanisch"}}