{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/comments/207445239","pull_request_review_id":143058795,"id":207445239,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzQ0NTIzOQ==","diff_hunk":"@@ -28,6 +28,20 @@ module private ConverterHelpers =\n     \n     let getUnionCasesMemorised = memorise FSharpType.GetUnionCases\n \n+    let constructUnionCaseMemorised = memorise FSharpValue.PreComputeUnionConstructor\n+\n+    let getUnionCaseProperyInfoFieldsMemorised = memorise (fun (case: UnionCaseInfo) -> case.GetFields())\n+\n+    let findNoFieldsMatchingUnionCaseByNameAndType  = ","path":"FSharpLu.Json/Compact.fs","position":8,"original_position":8,"commit_id":"f46192c0b3e5ae148f457d7fb382294b3c824ae8","original_commit_id":"f46192c0b3e5ae148f457d7fb382294b3c824ae8","user":{"login":"blumu","id":3913258,"node_id":"MDQ6VXNlcjM5MTMyNTg=","avatar_url":"https://avatars3.githubusercontent.com/u/3913258?v=4","gravatar_id":"","url":"https://api.github.com/users/blumu","html_url":"https://github.com/blumu","followers_url":"https://api.github.com/users/blumu/followers","following_url":"https://api.github.com/users/blumu/following{/other_user}","gists_url":"https://api.github.com/users/blumu/gists{/gist_id}","starred_url":"https://api.github.com/users/blumu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blumu/subscriptions","organizations_url":"https://api.github.com/users/blumu/orgs","repos_url":"https://api.github.com/users/blumu/repos","events_url":"https://api.github.com/users/blumu/events{/privacy}","received_events_url":"https://api.github.com/users/blumu/received_events","type":"User","site_admin":false},"body":"Naming consistency: `findNoFieldsMatchingUnionCaseByNameAndType` does not end with `Memorised` like the two let bindings above. I recommend moving everything under `Memorised` module and removing the suffix everywhere.","created_at":"2018-08-03T05:38:07Z","updated_at":"2018-08-03T05:39:36Z","html_url":"https://github.com/Microsoft/fsharplu/pull/46#discussion_r207445239","pull_request_url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/comments/207445239"},"html":{"href":"https://github.com/Microsoft/fsharplu/pull/46#discussion_r207445239"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46","id":205597245,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1NTk3MjQ1","html_url":"https://github.com/Microsoft/fsharplu/pull/46","diff_url":"https://github.com/Microsoft/fsharplu/pull/46.diff","patch_url":"https://github.com/Microsoft/fsharplu/pull/46.patch","issue_url":"https://api.github.com/repos/Microsoft/fsharplu/issues/46","number":46,"state":"open","locked":false,"title":"Deserialisation performance enhancements","user":{"login":"mvkra","id":5882179,"node_id":"MDQ6VXNlcjU4ODIxNzk=","avatar_url":"https://avatars1.githubusercontent.com/u/5882179?v=4","gravatar_id":"","url":"https://api.github.com/users/mvkra","html_url":"https://github.com/mvkra","followers_url":"https://api.github.com/users/mvkra/followers","following_url":"https://api.github.com/users/mvkra/following{/other_user}","gists_url":"https://api.github.com/users/mvkra/gists{/gist_id}","starred_url":"https://api.github.com/users/mvkra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvkra/subscriptions","organizations_url":"https://api.github.com/users/mvkra/orgs","repos_url":"https://api.github.com/users/mvkra/repos","events_url":"https://api.github.com/users/mvkra/events{/privacy}","received_events_url":"https://api.github.com/users/mvkra/received_events","type":"User","site_admin":false},"body":"Some more code to improve the deserialisation side this time.  A synthetic benchmark reduces the performance gains I experienced in my real work app but still significant. \r\n\r\nAlso added a write performance enhancement that came up when profiling: Replacing a \"sprintf %A value\" for the field-less union case to derive the union case name with just getting the case name previously resolved already also improves write performance as the \"%A\" reflection is no longer required.\r\n\r\nA quick benchmark on my laptop for deserialisation (approx 20% increase in performance):\r\nOriginal results [N: 1000000, TimeInMilliseconds: 125906]\r\nNew results [N: 1000000, TimeInMilliseconds: 100170].","created_at":"2018-08-02T01:45:57Z","updated_at":"2018-08-03T05:39:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"24f1513a129b20ca95e8bf5a6df340b1a8fac721","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46/commits","review_comments_url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46/comments","review_comment_url":"https://api.github.com/repos/Microsoft/fsharplu/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/fsharplu/issues/46/comments","statuses_url":"https://api.github.com/repos/Microsoft/fsharplu/statuses/f46192c0b3e5ae148f457d7fb382294b3c824ae8","head":{"label":"mvkra:deserialise-performance","ref":"deserialise-performance","sha":"f46192c0b3e5ae148f457d7fb382294b3c824ae8","user":{"login":"mvkra","id":5882179,"node_id":"MDQ6VXNlcjU4ODIxNzk=","avatar_url":"https://avatars1.githubusercontent.com/u/5882179?v=4","gravatar_id":"","url":"https://api.github.com/users/mvkra","html_url":"https://github.com/mvkra","followers_url":"https://api.github.com/users/mvkra/followers","following_url":"https://api.github.com/users/mvkra/following{/other_user}","gists_url":"https://api.github.com/users/mvkra/gists{/gist_id}","starred_url":"https://api.github.com/users/mvkra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvkra/subscriptions","organizations_url":"https://api.github.com/users/mvkra/orgs","repos_url":"https://api.github.com/users/mvkra/repos","events_url":"https://api.github.com/users/mvkra/events{/privacy}","received_events_url":"https://api.github.com/users/mvkra/received_events","type":"User","site_admin":false},"repo":{"id":143224066,"node_id":"MDEwOlJlcG9zaXRvcnkxNDMyMjQwNjY=","name":"fsharplu","full_name":"mvkra/fsharplu","owner":{"login":"mvkra","id":5882179,"node_id":"MDQ6VXNlcjU4ODIxNzk=","avatar_url":"https://avatars1.githubusercontent.com/u/5882179?v=4","gravatar_id":"","url":"https://api.github.com/users/mvkra","html_url":"https://github.com/mvkra","followers_url":"https://api.github.com/users/mvkra/followers","following_url":"https://api.github.com/users/mvkra/following{/other_user}","gists_url":"https://api.github.com/users/mvkra/gists{/gist_id}","starred_url":"https://api.github.com/users/mvkra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mvkra/subscriptions","organizations_url":"https://api.github.com/users/mvkra/orgs","repos_url":"https://api.github.com/users/mvkra/repos","events_url":"https://api.github.com/users/mvkra/events{/privacy}","received_events_url":"https://api.github.com/users/mvkra/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mvkra/fsharplu","description":"This library provides a set of F# helpers for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization.","fork":true,"url":"https://api.github.com/repos/mvkra/fsharplu","forks_url":"https://api.github.com/repos/mvkra/fsharplu/forks","keys_url":"https://api.github.com/repos/mvkra/fsharplu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mvkra/fsharplu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mvkra/fsharplu/teams","hooks_url":"https://api.github.com/repos/mvkra/fsharplu/hooks","issue_events_url":"https://api.github.com/repos/mvkra/fsharplu/issues/events{/number}","events_url":"https://api.github.com/repos/mvkra/fsharplu/events","assignees_url":"https://api.github.com/repos/mvkra/fsharplu/assignees{/user}","branches_url":"https://api.github.com/repos/mvkra/fsharplu/branches{/branch}","tags_url":"https://api.github.com/repos/mvkra/fsharplu/tags","blobs_url":"https://api.github.com/repos/mvkra/fsharplu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mvkra/fsharplu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mvkra/fsharplu/git/refs{/sha}","trees_url":"https://api.github.com/repos/mvkra/fsharplu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mvkra/fsharplu/statuses/{sha}","languages_url":"https://api.github.com/repos/mvkra/fsharplu/languages","stargazers_url":"https://api.github.com/repos/mvkra/fsharplu/stargazers","contributors_url":"https://api.github.com/repos/mvkra/fsharplu/contributors","subscribers_url":"https://api.github.com/repos/mvkra/fsharplu/subscribers","subscription_url":"https://api.github.com/repos/mvkra/fsharplu/subscription","commits_url":"https://api.github.com/repos/mvkra/fsharplu/commits{/sha}","git_commits_url":"https://api.github.com/repos/mvkra/fsharplu/git/commits{/sha}","comments_url":"https://api.github.com/repos/mvkra/fsharplu/comments{/number}","issue_comment_url":"https://api.github.com/repos/mvkra/fsharplu/issues/comments{/number}","contents_url":"https://api.github.com/repos/mvkra/fsharplu/contents/{+path}","compare_url":"https://api.github.com/repos/mvkra/fsharplu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mvkra/fsharplu/merges","archive_url":"https://api.github.com/repos/mvkra/fsharplu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mvkra/fsharplu/downloads","issues_url":"https://api.github.com/repos/mvkra/fsharplu/issues{/number}","pulls_url":"https://api.github.com/repos/mvkra/fsharplu/pulls{/number}","milestones_url":"https://api.github.com/repos/mvkra/fsharplu/milestones{/number}","notifications_url":"https://api.github.com/repos/mvkra/fsharplu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mvkra/fsharplu/labels{/name}","releases_url":"https://api.github.com/repos/mvkra/fsharplu/releases{/id}","deployments_url":"https://api.github.com/repos/mvkra/fsharplu/deployments","created_at":"2018-08-02T01:02:52Z","updated_at":"2018-08-02T01:02:54Z","pushed_at":"2018-08-02T01:23:52Z","git_url":"git://github.com/mvkra/fsharplu.git","ssh_url":"git@github.com:mvkra/fsharplu.git","clone_url":"https://github.com/mvkra/fsharplu.git","svn_url":"https://github.com/mvkra/fsharplu","homepage":"https://www.nuget.org/packages/Microsoft.FSharpLu/","size":183,"stargazers_count":0,"watchers_count":0,"language":"F#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"51f70fb27531315b9c0215192495981d213d0397","user":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":61918361,"node_id":"MDEwOlJlcG9zaXRvcnk2MTkxODM2MQ==","name":"fsharplu","full_name":"Microsoft/fsharplu","owner":{"login":"Microsoft","id":6154722,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYxNTQ3MjI=","avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/fsharplu","description":"This library provides a set of F# helpers for string manipulations, logging, collection data structures, file operations, text processing, security, async, parsing, diagnostics, configuration files and Json serialization.","fork":false,"url":"https://api.github.com/repos/Microsoft/fsharplu","forks_url":"https://api.github.com/repos/Microsoft/fsharplu/forks","keys_url":"https://api.github.com/repos/Microsoft/fsharplu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/fsharplu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/fsharplu/teams","hooks_url":"https://api.github.com/repos/Microsoft/fsharplu/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/fsharplu/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/fsharplu/events","assignees_url":"https://api.github.com/repos/Microsoft/fsharplu/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/fsharplu/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/fsharplu/tags","blobs_url":"https://api.github.com/repos/Microsoft/fsharplu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/fsharplu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/fsharplu/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/fsharplu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/fsharplu/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/fsharplu/languages","stargazers_url":"https://api.github.com/repos/Microsoft/fsharplu/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/fsharplu/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/fsharplu/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/fsharplu/subscription","commits_url":"https://api.github.com/repos/Microsoft/fsharplu/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/fsharplu/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/fsharplu/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/fsharplu/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/fsharplu/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/fsharplu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/fsharplu/merges","archive_url":"https://api.github.com/repos/Microsoft/fsharplu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/fsharplu/downloads","issues_url":"https://api.github.com/repos/Microsoft/fsharplu/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/fsharplu/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/fsharplu/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/fsharplu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/fsharplu/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/fsharplu/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/fsharplu/deployments","created_at":"2016-06-24T23:47:02Z","updated_at":"2018-08-03T05:24:11Z","pushed_at":"2018-08-03T05:24:09Z","git_url":"git://github.com/Microsoft/fsharplu.git","ssh_url":"git@github.com:Microsoft/fsharplu.git","clone_url":"https://github.com/Microsoft/fsharplu.git","svn_url":"https://github.com/Microsoft/fsharplu","homepage":"https://www.nuget.org/packages/Microsoft.FSharpLu/","size":182,"stargazers_count":189,"watchers_count":189,"language":"F#","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":18,"mirror_url":null,"archived":false,"open_issues_count":8,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":18,"open_issues":8,"watchers":189,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46"},"html":{"href":"https://github.com/Microsoft/fsharplu/pull/46"},"issue":{"href":"https://api.github.com/repos/Microsoft/fsharplu/issues/46"},"comments":{"href":"https://api.github.com/repos/Microsoft/fsharplu/issues/46/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/fsharplu/pulls/46/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/fsharplu/statuses/f46192c0b3e5ae148f457d7fb382294b3c824ae8"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"blumu"}}