Skip to content

fix encoder length and add test#4

Merged
jsneedles merged 2 commits into
mainfrom
fix_encoder_length
Apr 13, 2026
Merged

fix encoder length and add test#4
jsneedles merged 2 commits into
mainfrom
fix_encoder_length

Conversation

@jsneedles

Copy link
Copy Markdown
Member

Fixes GetEncodedLength which was underestimating length of non-ascii characters when percent encoded.

@github-actions

Copy link
Copy Markdown

Test results

79 tests   79 ✅  0s ⏱️
 1 suites   0 💤
 1 files     0 ❌

Results for commit 4a4779e.

@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown

Test results

79 tests   79 ✅  0s ⏱️
 1 suites   0 💤
 1 files     0 ❌

Results for commit 21be424.

♻️ This comment has been updated with latest results.

@github-actions

Copy link
Copy Markdown

Benchmark Results

HtmlCssToImage.Benchmarks.Benchmarks.HmacBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.63GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
Hmac_Standard_Instance 2.029 μs 0.0109 μs 0.0097 μs 1.00 0.0648 696 B 1.00
HCTI_HmacToken_Optimized 1.814 μs 0.0073 μs 0.0061 μs 0.89 0.0134 152 B 0.22

HtmlCssToImage.Benchmarks.Benchmarks.MakeAuthHeaderBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Intel Xeon Platinum 8370C CPU 2.80GHz (Max: 3.26GHz), 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v4
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v4

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio RatioSD Gen0 Allocated Alloc Ratio
AuthHeader_Standard_StringFormat 100.54 ns 2.571 ns 2.960 ns 1.00 0.04 0.0366 376 B 1.00
HCTI_AuthHeader_Optimized 74.02 ns 0.590 ns 0.460 ns 0.74 0.02 0.0329 168 B 0.45

HtmlCssToImage.Benchmarks.Benchmarks.QueryStringEncoderBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.84GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
BuiltIn_HttpUtility 1.141 μs 0.0067 μs 0.0060 μs 1.00 0.2937 2976 B 1.00
HCTI_QueryStringEncoder 1.200 μs 0.0043 μs 0.0040 μs 1.05 0.1450 744 B 0.25

HtmlCssToImage.Benchmarks.Benchmarks.TemplateListUrlBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method templateId nextPageStart Mean Error StdDev Ratio RatioSD Gen0 Allocated Alloc Ratio
Basic ? ? 67.49 ns 1.365 ns 1.341 ns 1.00 0.03 0.0210 160 B 1.00
Optimized ? ? 26.97 ns 0.471 ns 0.417 ns 0.40 0.01 0.0095 96 B 0.60
Basic t-daa(...)2efe6 [38] ? 98.84 ns 1.689 ns 1.580 ns 1.00 0.02 0.0339 344 B 1.00
Optimized t-daa(...)2efe6 [38] ? 32.60 ns 0.609 ns 0.569 ns 0.33 0.01 0.0164 176 B 0.51
Basic t-daa(...)2efe6 [38] 1735689600 91.57 ns 2.331 ns 2.684 ns 1.00 0.04 0.0323 328 B 1.00
Optimized t-daa(...)2efe6 [38] 1735689600 47.42 ns 0.518 ns 0.432 ns 0.52 0.02 0.0213 224 B 0.68

@github-actions

Copy link
Copy Markdown

Benchmark Results

HtmlCssToImage.Benchmarks.Benchmarks.HmacBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
Hmac_Standard_Instance 2.026 μs 0.0145 μs 0.0136 μs 1.00 0.0648 696 B 1.00
HCTI_HmacToken_Optimized 1.804 μs 0.0042 μs 0.0037 μs 0.89 0.0191 152 B 0.22

HtmlCssToImage.Benchmarks.Benchmarks.MakeAuthHeaderBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.77GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
AuthHeader_Standard_StringFormat 88.62 ns 0.589 ns 0.522 ns 1.00 0.0370 376 B 1.00
HCTI_AuthHeader_Optimized 74.24 ns 0.275 ns 0.257 ns 0.84 0.0221 168 B 0.45

HtmlCssToImage.Benchmarks.Benchmarks.QueryStringEncoderBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.83GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
BuiltIn_HttpUtility 1.219 μs 0.0117 μs 0.0098 μs 1.00 0.2937 2976 B 1.00
HCTI_QueryStringEncoder 1.127 μs 0.0067 μs 0.0063 μs 0.92 0.1450 744 B 0.25

HtmlCssToImage.Benchmarks.Benchmarks.TemplateListUrlBenchmark


BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.201
  [Host]  : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3
  .NET 10 : .NET 10.0.5 (10.0.5, 10.0.526.15411), X64 RyuJIT x86-64-v3

Job=.NET 10  EnvironmentVariables=DOTNET_TieredPGO=0  Runtime=.NET 10.0  
Server=True  MaxIterationCount=20  MaxWarmupIterationCount=5  
MinWarmupIterationCount=2  

Method templateId nextPageStart Mean Error StdDev Ratio Gen0 Allocated Alloc Ratio
Basic ? ? 64.03 ns 0.309 ns 0.274 ns 1.00 0.0210 160 B 1.00
Optimized ? ? 24.55 ns 0.093 ns 0.087 ns 0.38 0.0095 96 B 0.60
Basic t-daa(...)2efe6 [38] ? 92.10 ns 0.243 ns 0.227 ns 1.00 0.0339 344 B 1.00
Optimized t-daa(...)2efe6 [38] ? 29.92 ns 0.189 ns 0.167 ns 0.32 0.0161 176 B 0.51
Basic t-daa(...)2efe6 [38] 1735689600 84.13 ns 0.152 ns 0.127 ns 1.00 0.0323 328 B 1.00
Optimized t-daa(...)2efe6 [38] 1735689600 43.18 ns 0.055 ns 0.043 ns 0.51 0.0212 224 B 0.68

@jsneedles jsneedles merged commit 6009d3c into main Apr 13, 2026
9 checks passed
@jsneedles jsneedles deleted the fix_encoder_length branch April 13, 2026 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant