{"action":"created","issue":{"url":"https://api.github.com/repos/gitextensions/gitextensions/issues/4474","repository_url":"https://api.github.com/repos/gitextensions/gitextensions","labels_url":"https://api.github.com/repos/gitextensions/gitextensions/issues/4474/labels{/name}","comments_url":"https://api.github.com/repos/gitextensions/gitextensions/issues/4474/comments","events_url":"https://api.github.com/repos/gitextensions/gitextensions/issues/4474/events","html_url":"https://github.com/gitextensions/gitextensions/pull/4474","id":296555764,"number":4474,"title":"Improve SynchronizedProcessReader performance","user":{"login":"drewnoakes","id":350947,"avatar_url":"https://avatars2.githubusercontent.com/u/350947?v=4","gravatar_id":"","url":"https://api.github.com/users/drewnoakes","html_url":"https://github.com/drewnoakes","followers_url":"https://api.github.com/users/drewnoakes/followers","following_url":"https://api.github.com/users/drewnoakes/following{/other_user}","gists_url":"https://api.github.com/users/drewnoakes/gists{/gist_id}","starred_url":"https://api.github.com/users/drewnoakes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drewnoakes/subscriptions","organizations_url":"https://api.github.com/users/drewnoakes/orgs","repos_url":"https://api.github.com/users/drewnoakes/repos","events_url":"https://api.github.com/users/drewnoakes/events{/privacy}","received_events_url":"https://api.github.com/users/drewnoakes/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2018-02-12T23:01:33Z","updated_at":"2018-02-16T09:52:37Z","closed_at":"2018-02-13T12:36:45Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/gitextensions/gitextensions/pulls/4474","html_url":"https://github.com/gitextensions/gitextensions/pull/4474","diff_url":"https://github.com/gitextensions/gitextensions/pull/4474.diff","patch_url":"https://github.com/gitextensions/gitextensions/pull/4474.patch"},"body":"Changes proposed in this pull request:\r\n\r\n - Replace creation of two new threads for each external process, instead scheduling lightweight `Task`s on the thread pool. Creating threads is a relatively costly operation and they serve no purpose here that cannot be served by tasks.\r\n - Use `StreamReader.ReadToEndAsync` and `Stream.CopyToAsync` to take advantage of async IO (completion ports, etc) provided by the underlying platform.\r\n \r\nWhat did I do to test the code and ensure quality:\r\n - Document changed API methods.\r\n - Reduce the amount of code.\r\n - Contain the changes to one class, allowing for easier review. There should be no visible change outside of this class, other than things running faster and using fewer kernel resources.\r\n\r\nHas been tested on:\r\n - Windows 10\r\n"},"comment":{"url":"https://api.github.com/repos/gitextensions/gitextensions/issues/comments/366190267","html_url":"https://github.com/gitextensions/gitextensions/pull/4474#issuecomment-366190267","issue_url":"https://api.github.com/repos/gitextensions/gitextensions/issues/4474","id":366190267,"user":{"login":"jbialobr","id":1003909,"avatar_url":"https://avatars2.githubusercontent.com/u/1003909?v=4","gravatar_id":"","url":"https://api.github.com/users/jbialobr","html_url":"https://github.com/jbialobr","followers_url":"https://api.github.com/users/jbialobr/followers","following_url":"https://api.github.com/users/jbialobr/following{/other_user}","gists_url":"https://api.github.com/users/jbialobr/gists{/gist_id}","starred_url":"https://api.github.com/users/jbialobr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbialobr/subscriptions","organizations_url":"https://api.github.com/users/jbialobr/orgs","repos_url":"https://api.github.com/users/jbialobr/repos","events_url":"https://api.github.com/users/jbialobr/events{/privacy}","received_events_url":"https://api.github.com/users/jbialobr/received_events","type":"User","site_admin":false},"created_at":"2018-02-16T09:52:37Z","updated_at":"2018-02-16T09:52:37Z","author_association":"MEMBER","body":" I am able to consistently reproduce a \"freez\" by:\r\n\r\n1. run GE compiled at af78377aab102908a28398acc87e8ae03ac62ad6\r\n2. open GE repository (wait a while until all data is loaded)\r\n3. move mouse over the revisions grid\r\n4. scroll mouse wheel ten times (scroll a good number of rows ~ 40)\r\n5. click (select) any revision on the revisions grid. Now GE freezes.\r\n\r\nLet me know if that works for you."}}
{"actor":{"display_login":"jbialobr"}}