{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/WinObjC/issues/2240","repository_url":"https://api.github.com/repos/Microsoft/WinObjC","labels_url":"https://api.github.com/repos/Microsoft/WinObjC/issues/2240/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/WinObjC/issues/2240/comments","events_url":"https://api.github.com/repos/Microsoft/WinObjC/issues/2240/events","html_url":"https://github.com/Microsoft/WinObjC/pull/2240","id":214540613,"number":2240,"title":"Re-implement NSOperationQueue","user":{"login":"ms-jihua","id":16024095,"avatar_url":"https://avatars3.githubusercontent.com/u/16024095?v=3","gravatar_id":"","url":"https://api.github.com/users/ms-jihua","html_url":"https://github.com/ms-jihua","followers_url":"https://api.github.com/users/ms-jihua/followers","following_url":"https://api.github.com/users/ms-jihua/following{/other_user}","gists_url":"https://api.github.com/users/ms-jihua/gists{/gist_id}","starred_url":"https://api.github.com/users/ms-jihua/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ms-jihua/subscriptions","organizations_url":"https://api.github.com/users/ms-jihua/orgs","repos_url":"https://api.github.com/users/ms-jihua/repos","events_url":"https://api.github.com/users/ms-jihua/events{/privacy}","received_events_url":"https://api.github.com/users/ms-jihua/received_events","type":"User","site_admin":false},"labels":[{"id":245005357,"url":"https://api.github.com/repos/Microsoft/WinObjC/labels/cla-not-required","name":"cla-not-required","color":"009800","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-03-15T22:05:52Z","updated_at":"2017-03-15T22:13:08Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Microsoft/WinObjC/pulls/2240","html_url":"https://github.com/Microsoft/WinObjC/pull/2240","diff_url":"https://github.com/Microsoft/WinObjC/pull/2240.diff","patch_url":"https://github.com/Microsoft/WinObjC/pull/2240.patch"},"body":"- Add support for\r\n    - queuePriority\r\n    - underlyingQueue\r\n    - currentQueue\r\n    - maxConcurrentOperationCount\r\n    - KVO-compliance\r\n- Fixes some edge cases (ie: hanging on certain non-ready operations)\r\n- Add unit tests\r\n- Add performance benchmark tests\r\n\r\nFixes #2228\r\nFixes #1655\r\nFixes #869"},"comment":{"url":"https://api.github.com/repos/Microsoft/WinObjC/issues/comments/286896269","html_url":"https://github.com/Microsoft/WinObjC/pull/2240#issuecomment-286896269","issue_url":"https://api.github.com/repos/Microsoft/WinObjC/issues/2240","id":286896269,"user":{"login":"ms-jihua","id":16024095,"avatar_url":"https://avatars3.githubusercontent.com/u/16024095?v=3","gravatar_id":"","url":"https://api.github.com/users/ms-jihua","html_url":"https://github.com/ms-jihua","followers_url":"https://api.github.com/users/ms-jihua/followers","following_url":"https://api.github.com/users/ms-jihua/following{/other_user}","gists_url":"https://api.github.com/users/ms-jihua/gists{/gist_id}","starred_url":"https://api.github.com/users/ms-jihua/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ms-jihua/subscriptions","organizations_url":"https://api.github.com/users/ms-jihua/orgs","repos_url":"https://api.github.com/users/ms-jihua/repos","events_url":"https://api.github.com/users/ms-jihua/events{/privacy}","received_events_url":"https://api.github.com/users/ms-jihua/received_events","type":"User","site_admin":false},"created_at":"2017-03-15T22:13:08Z","updated_at":"2017-03-15T22:13:08Z","body":"Here are perf numbers, comparing on Release with this change, develop, and #1676 which we backed out:\r\n![image](https://cloud.githubusercontent.com/assets/16024095/23972983/534c76b6-0991-11e7-8b3f-b8aa0fee85c9.png)\r\n\r\nThings to note:\r\n- The time it takes to add 1000 operations individually has doubled from develop. However, if we look under the hood we see that \r\n![image](https://cloud.githubusercontent.com/assets/16024095/23973038/8ae2a82a-0991-11e7-8e31-ff7957018099.png)\r\n90% of this time is spent in KVO (!!), which we are looking at next.\r\n- The time it takes to add 1000 operations together, and wait for them to finish, has largely remained the same. However, unlike develop, not waiting for them to finish provides no significant time discount - it appears that unlike develop, we are bottlenecked by KVO rather than the process of executing the operations, so our perf should improve once we look at KVO."}}
{"actor":{"display_login":"ms-jihua"}}