Skip to content

Optimized scalar parsing #409

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

Merged
merged 17 commits into from
Oct 13, 2024
Merged

Conversation

fktn-k
Copy link
Owner

@fktn-k fktn-k commented Oct 12, 2024

In this PR, scalar parsing has been optimized by separating actual parsing of scalar contents from lexical analysis.
That has significantly reduced unnecessarily complicated conditional branches and heap allocations for intermediate values.
The performance of the whole deserialization process has therefore been increased by 5 Mi/s on average.

parsed YAML file Before this PR After this PR
ubuntu.yml 50.4621Mi/s 55.1393Mi/s
citm_catalog.json 75.5534Mi/s 82.9931Mi/s
citm_catalog.yml 32.7921Mi/s 35.152Mi/s

Pull Request Checklist

Read the CONTRIBUTING.md file for detailed information.

  • Changes are described in the pull request or in a referenced issue.
  • The test suite compiles and runs without any error.
  • The code coverage on your branch is 100%.
  • The documentation is updated if you added/changed a feature.

Please don't

  • The C++11 support varies between different compilers and versions. Please note the list of supported compilers. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with #ifdefs or other means.
  • Please refrain from proposing changes that would break YAML specifications. If you propose a conformant extension of YAML to be supported by the library, please motivate this extension.
  • Please do not open pull requests that address multiple issues.

@fktn-k fktn-k added the improvement refactoring or optimization without public API changes label Oct 12, 2024
@fktn-k fktn-k added this to the Release v0.3.13 milestone Oct 12, 2024
@fktn-k fktn-k self-assigned this Oct 12, 2024
Copy link

github-actions bot commented Oct 12, 2024

:octocat: Upload Coverage Event Notification

Coverage data has been uploaded for the commit 9e18fcf839ae21f6280c6a424ec9bc9952638e2b.
You can download the artifact which contains the same file uploaded to the Coveralls and its HTML version.

Name fkYAML_coverage.pr409.zip
ID 2049446613
URL https://github.com/fktn-k/fkYAML/actions/runs/11310627871/artifacts/2049446613

@fktn-k fktn-k force-pushed the separate_scalar_parsing_from_lexical_analysis branch from 6a103ec to 023912d Compare October 13, 2024 02:12
@fktn-k fktn-k force-pushed the separate_scalar_parsing_from_lexical_analysis branch from 023912d to 9e18fcf Compare October 13, 2024 02:18
@fktn-k fktn-k changed the title Separate scalar parsing from lexical analysis Optimized scalar parsing Oct 13, 2024
@fktn-k fktn-k merged commit 0af84d3 into develop Oct 13, 2024
165 checks passed
@fktn-k fktn-k deleted the separate_scalar_parsing_from_lexical_analysis branch October 13, 2024 02:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement refactoring or optimization without public API changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant