• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jstedfast / MimeKit
0%
master: 95%

Build:
Build:
LAST BUILD BRANCH: nullable-api2
DEFAULT BRANCH: master
Repo Added 28 Jun 2015 11:55PM UTC
Files 191
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH rfc2047-perf
branch: rfc2047-perf
CHANGE BRANCH
x
Reset
  • rfc2047-perf
  • HEAD
  • binary-quoted-printable-decoder
  • bouncycastle2.0
  • core
  • crypto-abstractions
  • dependabot/nuget/System.Memory-4.5.5
  • dependabot/nuget/nunit-4.0.0
  • hwaccel-base64
  • issue682
  • master
  • mime-compliance
  • mime-compliance2
  • mimereader
  • mimereader-span
  • mimereader-span2
  • nullable-api
  • nullable-api2
  • parser-options-create
  • refs/pull/1072/merge
  • refs/pull/1162/merge
  • refs/pull/1163/merge
  • refs/pull/1176/merge
  • refs/tags/2.12.0
  • refs/tags/3.3.0
  • refs/tags/3.4.1
  • refs/tags/3.4.3
  • rfc2047-tokens
  • smime-revocation-checks
  • stream-spans
  • unix2dos-indexof
  • unsafe-scancontent
  • vnext

31 Aug 2023 03:14PM UTC coverage: 0.0%. Remained the same
4.1.0.917

Pull #952

coveralls.net

jstedfast
Reduced memory allocations in Rfc2047.DecodePhrase() and DecodeText()

By pushing the DecodeTokens() logic into a new interface so that decoding
can be done incrementally as we tokenize the phrase/text, we can avoid
allocating a List<Token> (and all of the tokens that goes with it) which
can drastically reduce GC pressure, especially when calling MailKit's
ImapFolder.Fetch/Async() methods with MessageSummaryItems.Envelope.

(IMAP FETCH responses including ENVELOPE metadata require decoding of
rfc2047-encoded strings, so DecodeText() and DecodePhrase() end up being
fairly performance critical - not as much as tokenization of IMAP
responses, but pretty high up there.)

This also slightly increases benchmark performance as well:

Before:

BenchmarkDotNet v0.13.7, Windows 11 (10.0.22621.2134/22H2/2022Update/SunValley2)
Intel Core i7-9700 CPU 3.00GHz, 1 CPU, 8 logical and 8 physical cores
.NET SDK 8.0.100-preview.7.23376.3
  [Host]     : .NET 6.0.21 (6.0.2123.36311), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.21 (6.0.2123.36311), X64 RyuJIT AVX2

|               Method |     Mean |     Error |    StdDev |
|--------------------- |---------:|----------:|----------:|
|   Rfc2047_DecodeText | 1.033 us | 0.0083 us | 0.0078 us |
| Rfc2047_DecodePhrase | 1.024 us | 0.0055 us | 0.0046 us |

After:

|               Method |     Mean |    Error |   StdDev |   Median |
|--------------------- |---------:|---------:|---------:|---------:|
|   Rfc2047_DecodeText | 973.0 ns | 18.20 ns | 30.41 ns | 956.5 ns |
| Rfc2047_DecodePhrase | 899.5 ns |  3.82 ns |  3.57 ns | 898.7 ns |
Pull Request #952: Reduced memory allocations in Rfc2047.DecodePhrase() and DecodeText()

0 of 0 relevant lines covered (NaN%)

0.0 hits per line

Relevant lines Covered
Build:
Build:
0 RELEVANT LINES 0 COVERED LINES
0.0 HITS PER LINE
Source Files on rfc2047-perf
  • List 0
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
4.1.0.917 rfc2047-perf Reduced memory allocations in Rfc2047.DecodePhrase() and DecodeText() By pushing the DecodeTokens() logic into a new interface so that decoding can be done incrementally as we tokenize the phrase/text, we can avoid allocating a List<Token> (and a... Pull #952 31 Aug 2023 03:24PM UTC jstedfast coveralls.net
0.0
4.1.0.914 rfc2047-perf Reduced memory allocations in Rfc2047.DecodePhrase() and DecodeText() By pushing the DecodeTokens() logic into a new interface so that decoding can be done incrementally as we tokenize the phrase/text, we can avoid allocating a List<Token> (and a... Pull #952 31 Aug 2023 03:08AM UTC jstedfast coveralls.net
0.0
See All Builds (2614)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc