Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serialization optimization #101

Merged
merged 2 commits into from
May 30, 2018
Merged

Serialization optimization #101

merged 2 commits into from
May 30, 2018

Conversation

ShamsulAmry
Copy link
Contributor

@ShamsulAmry ShamsulAmry commented May 29, 2018

Goal

Do second serialize call only if there is any data being trimmed

Tests

Tested by running existing unit tests. No new test added.

Discussion

Outstanding Questions

IPayload.Serialize() returns byte array and SimpleJson.SerializeObject() returns string.
Both will probably cause allocation in Large Object Heap for anything above ~85 KB.
I'm currently facing OutOfMemoryException and this is probably one of the contributor.
Better solution should be to serialize to stream. Don't want to depend on existing NuGet package?

Review

For the submitter, initial self-review:

  • Commented on code changes inline explain the reasoning behind the approach
  • Reviewed the test cases added for completeness and possible points for discussion
  • A changelog entry was added for the goal of this pull request
  • Check the scope of the changeset - is everything in the diff required for the pull request?
  • This pull request is ready for:
    • Initial review of the intended approach, not yet feature complete
    • Structural review of the classes, functions, and properties modified
    • Final review

For the pull request reviewer(s), this changeset has been reviewed for:

  • Consistency across platforms for structures or concepts added or modified
  • Consistency between the changeset and the goal stated above
  • Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
  • Usage friction - is the proposed change in usage cumbersome or complicated?
  • Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
  • Concurrency concerns - if components are accessed asynchronously, what issues will arise
  • Thoroughness of added tests and any missing edge cases
  • Idiomatic use of the language

Copy link
Contributor

@martin308 martin308 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, we definitely should only be doing the serialization twice if we need to

@martin308 martin308 merged commit 4e0a506 into bugsnag:master May 30, 2018
@ShamsulAmry ShamsulAmry deleted the serialize-fix branch May 30, 2018 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants