-
-
Notifications
You must be signed in to change notification settings - Fork 818
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
Added an ImapToken cache to try and reduce ImapToken allocations #1630
Open
jstedfast
wants to merge
8
commits into
master
Choose a base branch
from
imap-token-cache
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Commits on May 18, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 29a99cf - Browse repository at this point
Copy the full SHA 29a99cfView commit details -
Modified the ImapToken caching logic to include qstring tokens
Also reduced memory allocations in ImapTokenCache.AddOrGet()
Configuration menu - View commit details
-
Copy full SHA for ca0309e - Browse repository at this point
Copy the full SHA ca0309eView commit details -
Updated ImapStream, ImapEngine, and ImapCommand to reuse ByteArrayBui…
…lders This drastically reduces the number of allocations made when tokenizing IMAP responses. ImapCommand's usage was not really a major issue, but since ImapEngine.ReadLine/Async() needed a reusable ByteArrayBuilder anyway, might as well share that with ImapCommand.
Configuration menu - View commit details
-
Copy full SHA for c4fca35 - Browse repository at this point
Copy the full SHA c4fca35View commit details -
Modified ByteArrayBuilder.Clear() to downsize its buffer if it has gr…
…own too large One potential problem with reusing ByteArrayBuilders is that, because they can grow for some abnormally long tokens/lines/commands/etc, those oversized buffers will remain referenced by the ImapStream/ImapEngine until they are disposed which could be the life of the program. If we oportunistically scale back the size of the buffers when they are Clear()'d, then we can periodically reduce memory usage and allow those larger buffers to be used elsewhere.
Configuration menu - View commit details
-
Copy full SHA for aeb0135 - Browse repository at this point
Copy the full SHA aeb0135View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3f08526 - Browse repository at this point
Copy the full SHA 3f08526View commit details -
Configuration menu - View commit details
-
Copy full SHA for b0838f4 - Browse repository at this point
Copy the full SHA b0838f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 71319f6 - Browse repository at this point
Copy the full SHA 71319f6View commit details -
Configuration menu - View commit details
-
Copy full SHA for d82f45c - Browse repository at this point
Copy the full SHA d82f45cView commit details
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.