-
-
Notifications
You must be signed in to change notification settings - Fork 106
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
Implemented object pools und thread safety settings #229
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit a8dec64 Merge: ebb820c c4f0115 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 21:55:35 2021 +0100 Merge branch 'axuno:main' into main commit c4f0115 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 21:54:46 2021 +0100 Delete .github/workflows directory commit 3283ba9 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 17:05:09 2021 +0100 Remove demo projects commit 0ebf3f4 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 16:30:42 2021 +0100 Corrected path to test project commit a9a79d1 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 16:22:48 2021 +0100 Add AltCover to test commit 608533f Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 16:07:01 2021 +0100 Update build.yml commit 3005692 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 15:00:06 2021 +0100 Update build.yml commit 4683d59 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:23:29 2021 +0100 Update build.yml commit d3f9b68 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:19:05 2021 +0100 Update build.yml commit 4ac19ea Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:11:42 2021 +0100 Update build.yml commit ef76dba Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:08:13 2021 +0100 Update build.yml commit e2406b4 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:01:07 2021 +0100 Update build.yml commit adee45a Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 14:00:40 2021 +0100 Update build.yml commit 5464bb9 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Nov 2 13:53:50 2021 +0100 Create build.yml commit ebb820c Merge: 365bbd0 ca28b30 Author: axunonb <axunonb@users.noreply.github.com> Date: Thu Oct 21 10:06:49 2021 +0200 Merge branch 'axuno:main' into main commit ca28b30 Author: axunonb <axunonb@users.noreply.github.com> Date: Thu Oct 21 10:05:03 2021 +0200 Backport fixes from v3 (axuno#213) Bumped version to 2.7.1 Back-ported bug fixes from v3.0.0-alpha: axuno#179 - Corrected DualFromZeroToTwo plural rule axuno#211 . Illegal placeholder characters that are not 8-bit, will no more throw unexpected ThrowByteOverflowException commit 365bbd0 Author: axunonb <nb@axuno.net> Date: Thu Oct 21 09:16:12 2021 +0200 Bumped version to 2.7.1 Backported bug fixes from v3.0.0-alpha: axuno#179 - Corrected DualFromZeroToTwo plural rule axuno#211 . Illegal placeholder characters that are not 8-bit, will no more throw unexpected ThrowByteOverflowException commit 3165fc7 Author: axunonb <axunonb@users.noreply.github.com> Date: Thu Oct 21 08:03:32 2021 +0200 Updated NuGet secure key commit 8169585 Author: axunonb <axunonb@users.noreply.github.com> Date: Sun Sep 5 23:09:38 2021 +0200 Update README.md commit 1e09b6a Author: axunonb <axunonb@users.noreply.github.com> Date: Mon Aug 30 01:52:50 2021 +0200 Update README.md commit 8954f3e Author: axunonb <axunonb@users.noreply.github.com> Date: Mon Aug 30 01:51:32 2021 +0200 Update README.md commit a16b01c Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Jun 15 00:06:03 2021 +0200 Update README.md commit d9462f5 Author: axunonb <axunonb@users.noreply.github.com> Date: Tue Jun 15 00:05:17 2021 +0200 Update README.md
* Performance tests * Documentation in CHANGES.md * Tests for PoolSettings.IsPoolingEnabled = false * Include netstandard2.0 in unit tests
Codecov Report
@@ Coverage Diff @@
## version/v3.0 #229 +/- ##
============================================
+ Coverage 95% 96% +1%
============================================
Files 56 84 +28
Lines 2350 2884 +534
============================================
+ Hits 2241 2768 +527
- Misses 109 116 +7
Continue to review full report at Codecov.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
1. Object Pools
After implementing Object Pools for all classes which are frequently instantiated, GC and memory allocation again went down significantly.
In order to return "smart" objects back to the object pool, its important to use one of the following patterns.
Examples:
a) Single thread context (no need to care about object pooling)
b) Recommended: Auto-dispose
Format
(e.g.: caching, multi treading context)c) Call
Format.Dispose()
(e.g.: caching, multi treading context)2. Thread Safety
SmartFormat makes heavy use of caching and object pooling for expensive operations, which both require
static
containers.a) Instantiating
SmartFormatter
s from different threads:a) Instantiating
SmartFormatter
s from a single thread: