Skip to content

Commit ab24898

Browse files
committed
Minor tweaks to Benchmarks and added Benchmarks.md for latest run info
1 parent 3d694ee commit ab24898

File tree

4 files changed

+105
-4
lines changed

4 files changed

+105
-4
lines changed

Benchmarks/Benchmarks.md

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Benchmarks
2+
3+
## Latest Results
4+
5+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2894)
6+
Intel Core i7-9700 CPU 3.00GHz, 1 CPU, 8 logical and 8 physical cores
7+
.NET SDK 9.0.200-preview.0.25057.12
8+
[Host] : .NET 8.0.12 (8.0.1224.60305), X64 RyuJIT AVX2
9+
DefaultJob : .NET 8.0.12 (8.0.1224.60305), X64 RyuJIT AVX2
10+
11+
### MimeMessage
12+
13+
| Method | Mean | Error | StdDev |
14+
|------------------------------------------------ |---------:|----------:|----------:|
15+
| MimeMessage_Prepare_EncodingConstraint_None | 4.572 us | 0.0894 us | 0.1029 us |
16+
| MimeMessage_Prepare_EncodingConstraint_SevenBit | 4.628 us | 0.0910 us | 0.1617 us |
17+
| MimeMessage_Prepare_EncodingConstraint_EightBit | 5.052 us | 0.0850 us | 0.0754 us |
18+
19+
### MimeParser
20+
21+
| Method | Mean | Error | StdDev |
22+
|--------------------------------------------------- |--------------:|------------:|------------:|
23+
| MimeParser_StarTrekMessage | 400.462 us | 5.7279 us | 7.4479 us |
24+
| MimeParser_StarTrekMessagePersistent | 284.192 us | 2.8357 us | 2.3679 us |
25+
| MimeParser_ContentLengthMbox | 2,702.926 us | 41.4907 us | 38.8104 us |
26+
| MimeParser_ContentLengthMboxPersistent | 2,132.559 us | 24.8048 us | 21.9888 us |
27+
| MimeParser_JwzMbox | 22,628.980 us | 252.5825 us | 223.9078 us |
28+
| MimeParser_JwzMboxPersistent | 17,000.140 us | 141.0316 us | 131.9211 us |
29+
| MimeParser_HeaderStressTest | 51.124 us | 0.7945 us | 0.7043 us |
30+
| ExperimentalMimeParser_StarTrekMessage | 383.670 us | 7.0703 us | 6.9440 us |
31+
| ExperimentalMimeParser_StarTrekMessagePersistent | 281.025 us | 4.0180 us | 3.5618 us |
32+
| ExperimentalMimeParser_ContentLengthMbox | 2,595.748 us | 27.7057 us | 24.5604 us |
33+
| ExperimentalMimeParser_ContentLengthMboxPersistent | 2,098.446 us | 30.5942 us | 28.6179 us |
34+
| ExperimentalMimeParser_JwzMbox | 22,666.019 us | 434.5746 us | 533.6967 us |
35+
| ExperimentalMimeParser_JwzMboxPersistent | 16,821.016 us | 327.6765 us | 490.4508 us |
36+
| ExperimentalMimeParser_HeaderStressTest | 41.746 us | 0.5287 us | 0.4415 us |
37+
| MimeReader_StarTrekMessage | 221.958 us | 4.1713 us | 4.6364 us |
38+
| MimeReader_ContentLengthMbox | 992.352 us | 17.0429 us | 15.9419 us |
39+
| MimeReader_JwzMbox | 10,846.372 us | 214.6453 us | 387.0498 us |
40+
| MimeReader_HeaderStressTest | 9.911 us | 0.0660 us | 0.0585 us |
41+
42+
### BestEncodingFilter
43+
44+
| Method | Mean | Error | StdDev |
45+
|------------------------ |------------:|----------:|----------:|
46+
| BestEncoding_LoremIpsum | 382.0 us | 1.71 us | 1.60 us |
47+
| BestEncoding_GirlJpeg | 50,750.1 us | 667.52 us | 591.74 us |
48+
49+
### MIME Decoders
50+
51+
| Method | Mean | Error | StdDev |
52+
|----------------------- |-------------:|------------:|------------:|
53+
| Base64Decoder | 362,045.2 ns | 5,364.75 ns | 5,018.19 ns |
54+
| QuotedPrintableDecoder | 665.2 ns | 13.12 ns | 19.64 ns |
55+
| UUDecoder | 478,663.6 ns | 7,484.50 ns | 6,249.90 ns |
56+
57+
### MIME Encoders
58+
59+
| Method | Mean | Error | StdDev |
60+
|----------------------- |-------------:|------------:|------------:|
61+
| Base64Encoder | 189,400.6 ns | 3,760.16 ns | 6,486.09 ns |
62+
| HexEncoder | 585,685.4 ns | 8,224.89 ns | 7,291.15 ns |
63+
| QEncoder | 700.2 ns | 13.59 ns | 13.35 ns |
64+
| QuotedPrintableEncoder | 946.1 ns | 13.60 ns | 11.36 ns |
65+
| UUEncoder | 239,259.4 ns | 4,695.51 ns | 6,882.61 ns |
66+
67+
### TrailingWhitespaceFilter
68+
69+
| Method | Mean | Error | StdDev |
70+
|------------------------------ |---------:|----------:|----------:|
71+
| TrailingWhitespace_LoremIpsum | 5.200 us | 0.0809 us | 0.0757 us |
72+
73+
### Dos2UnixFilter and Unix2DosFilter
74+
75+
| Method | Mean | Error | StdDev |
76+
|------------------------ |---------:|----------:|----------:|
77+
| Dos2Unix_LoremIpsumDos | 3.680 us | 0.0548 us | 0.0486 us |
78+
| Dos2Unix_LoremIpsumUnix | 3.560 us | 0.0330 us | 0.0308 us |
79+
| Unix2Dos_LoremIpsumDos | 4.668 us | 0.0765 us | 0.0678 us |
80+
| Unix2Dos_LoremIpsumUnix | 4.872 us | 0.0892 us | 0.1539 us |
81+
82+
### Rfc2047
83+
84+
| Method | Mean | Error | StdDev |
85+
|--------------------- |---------:|---------:|---------:|
86+
| Rfc2047_DecodeText | 914.6 ns | 18.19 ns | 30.40 ns |
87+
| Rfc2047_DecodePhrase | 831.7 ns | 5.32 ns | 4.15 ns |

Benchmarks/MimeMessageBenchmarks.cs

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
using System;
2828
using System.IO;
2929
using System.Linq;
30-
using System.Text;
3130

3231
using BenchmarkDotNet.Attributes;
3332

Benchmarks/MimeParserBenchmarks.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
using MimeKit;
3434

3535
namespace Benchmarks {
36-
public class MimeParserBenchmarks
37-
{
36+
public class MimeParserBenchmarks
37+
{
3838
static readonly string MessagesDataDir = Path.Combine (BenchmarkHelper.ProjectDir, "TestData", "messages");
3939
static readonly string MboxDataDir = Path.Combine (BenchmarkHelper.UnitTestsDir, "TestData", "mbox");
4040
const string MessageHeaderStressTest = @"Return-Path: <info@someserver>

Benchmarks/Program.cs

+16-1
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@
2424
// THE SOFTWARE.
2525
//
2626

27+
using System;
28+
2729
using BenchmarkDotNet.Configs;
2830
using BenchmarkDotNet.Running;
31+
using BenchmarkDotNet.Filters;
32+
using BenchmarkDotNet.Exporters;
2933

3034
namespace Benchmarks {
3135
public class Program
@@ -34,9 +38,20 @@ public static void Main (string[] args)
3438
{
3539
#if DEBUG
3640
var config = new DebugInProcessConfig ()
37-
.WithOptions (ConfigOptions.DisableOptimizationsValidator);
41+
.WithOptions (ConfigOptions.DisableOptimizationsValidator)
42+
.AddExporter (MarkdownExporter.GitHub);
3843
#else
3944
var config = ManualConfig.CreateMinimumViable ();
45+
//.AddExporter (MarkdownExporter.GitHub);
46+
#endif
47+
48+
#if false
49+
// Only run benchmarks for the MimeParser, ExperimentalMimeParser, and MimeReader classes
50+
config.AddFilter (new DisjunctionFilter (
51+
new NameFilter (name => name.StartsWith ("MimeParser_", StringComparison.Ordinal)),
52+
new NameFilter (name => name.StartsWith ("ExperimentalMimeParser_", StringComparison.Ordinal)),
53+
new NameFilter (name => name.StartsWith ("MimeReader_", StringComparison.Ordinal))
54+
));
4055
#endif
4156

4257
var summary = BenchmarkRunner.Run (typeof (Program).Assembly, config);

0 commit comments

Comments
 (0)