Skip to content

encoding/json: prevent compact twice to improve precomputed performance. #35320

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

Closed
wants to merge 1 commit into from

Conversation

qingyu31
Copy link

@qingyu31 qingyu31 commented Nov 3, 2019

related issue: #33422
JSON encoder will run compact on output of Marshaler anyway to confirm correctness of result.
But struct with many embed precomputed Marshaler resulting in poor performance by compact several times.
For example, json.RawMessage is designed to precompute a JSON encoding but it did not work as desiged.

@googlebot googlebot added the cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change. label Nov 3, 2019
@gopherbot
Copy link
Contributor

This PR (HEAD: 09c4cb6) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/205018 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 1:

Congratulations on opening your first change. Thank you for your contribution!

Next steps:
Within the next week or so, a maintainer will review your change and provide
feedback. See https://golang.org/doc/contribute.html#review for more info and
tips to get your patch through code review.

Most changes in the Go project go through a few rounds of revision. This can be
surprising to people new to the project. The careful, iterative review process
is our way of helping mentor contributors and ensuring that their contributions
have a lasting impact.

During May-July and Nov-Jan the Go project is in a code freeze, during which
little code gets reviewed or merged. If a reviewer responds with a comment like
R=go1.11, it means that this CL will be reviewed as part of the next development
cycle. See https://golang.org/s/release for more details.


Please don’t reply on this GitHub thread. Visit golang.org/cl/205018.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Daniel Martí:

Patch Set 1: Code-Review-2

Sorry, but adding options to the API needs to be decided in the issue tracker first. Perhaps file a proposal.

I don't think this idea has a high chance of being accepted though, because encoding/json prioritizes simplicity and correctness over speed.


Please don’t reply on this GitHub thread. Visit golang.org/cl/205018.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Orange Orange:

Patch Set 1:

Patch Set 1: Code-Review-2

Sorry, but adding options to the API needs to be decided in the issue tracker first. Perhaps file a proposal.

I don't think this idea has a high chance of being accepted though, because encoding/json prioritizes simplicity and correctness over speed.

I got that encoding/json prioritizes simplicity and correctness over speed.
json.RawMessage is designed as pre-compute. But a pre-compute field is validated twice or even more times.
In another word, the output of json.Marshal is alway correct, but still unnecessarily validated.
Thank you.


Please don’t reply on this GitHub thread. Visit golang.org/cl/205018.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Go Bot:

Patch Set 1:

Congratulations on opening your first change. Thank you for your contribution!

Next steps:
Within the next week or so, a maintainer will review your change and provide
feedback. See https://golang.org/doc/contribute.html#review for more info and
tips to get your patch through code review.

Most changes in the Go project go through a few rounds of revision. This can be
surprising to people new to the project. The careful, iterative review process
is our way of helping mentor contributors and ensuring that their contributions
have a lasting impact.

During May-July and Nov-Jan the Go project is in a code freeze, during which
little code gets reviewed or merged. If a reviewer responds with a comment like
R=go1.11, it means that this CL will be reviewed as part of the next development
cycle. See https://golang.org/s/release for more details.


Please don’t reply on this GitHub thread. Visit golang.org/cl/205018.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Daniel Martí:

Patch Set 1:

(1 comment)


Please don’t reply on this GitHub thread. Visit golang.org/cl/205018.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR is being closed because golang.org/cl/205018 has been abandoned.

Clearing my incoming reviews queue.

@gopherbot gopherbot closed this Oct 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants