Skip to content
This repository was archived by the owner on Feb 23, 2026. It is now read-only.
This repository was archived by the owner on Feb 23, 2026. It is now read-only.

Benchmarks for #115134 (am11) #348

Open

Description

@EgorBot

Processing dotnet/runtime#115134 (comment) command:

Command

-windows_intel -amd -arm

using System.Runtime.CompilerServices;
using BenchmarkDotNet.Attributes;

public class Bench
{
    [Benchmark] public object Box8() => Box(new Buffer8());
    [Benchmark] public object Box16() => Box(new Buffer16());
    [Benchmark] public object Box32() => Box(new Buffer32());
    [Benchmark] public object Box256() => Box(new Buffer256());


    [MethodImpl(MethodImplOptions.NoInlining | 
                MethodImplOptions.NoOptimization)]
    static object Box<T>(T value) => (object)value;
}

[InlineArray(1)] public struct Buffer8 {
    long _element0;
}
[InlineArray(2)] public struct Buffer16 {
    long _element0;
}
[InlineArray(4)] public struct Buffer32 {
    long _element0;
}
[InlineArray(32)] public struct Buffer256 {
    long _element0;
}

(EgorBot will reply in this issue)

Activity

  1. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-WNPTHO : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-XSACBE : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box8 Main 6.768 ns 0.0360 ns 1.00
    Box8 PR 10.072 ns 0.0769 ns 1.49
    Box16 Main 7.772 ns 0.0466 ns 1.00
    Box16 PR 10.185 ns 0.0661 ns 1.31
    Box32 Main 8.765 ns 0.0756 ns 1.00
    Box32 PR 11.655 ns 0.1140 ns 1.33
    Box256 Main 22.390 ns 0.0576 ns 1.00
    Box256 PR 31.501 ns 0.2161 ns 1.41

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  2. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-KWZCJM : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-NNJQHQ : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 7.004 ns 0.1145 ns 1.00
    Box8 PR 9.842 ns 0.1111 ns 1.41
    Box16 Main 8.461 ns 0.0396 ns 1.00
    Box16 PR 9.927 ns 0.1555 ns 1.17
    Box32 Main 9.557 ns 0.2318 ns 1.00
    Box32 PR 11.547 ns 0.1552 ns 1.21
    Box256 Main 19.673 ns 0.0508 ns 1.00
    Box256 PR 25.380 ns 0.0490 ns 1.29

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  3. am11 commented on Apr 29, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
    
        [MethodImpl(MethodImplOptions.NoInlining | 
                    MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value;
    }
    
    [InlineArray(1)] public struct Buffer8 {
        long _element0;
    }
    [InlineArray(2)] public struct Buffer16 {
        long _element0;
    }
    [InlineArray(4)] public struct Buffer32 {
        long _element0;
    }
    [InlineArray(32)] public struct Buffer256 {
        long _element0;
    }
  4. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-FXUNYD : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-GPIYDP : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box8 Main 6.673 ns 0.0351 ns 1.00
    Box8 PR 8.244 ns 0.0210 ns 1.24
    Box16 Main 7.601 ns 0.0062 ns 1.00
    Box16 PR 9.555 ns 0.0268 ns 1.26
    Box32 Main 8.451 ns 0.0407 ns 1.00
    Box32 PR 10.494 ns 0.0465 ns 1.24
    Box256 Main 23.046 ns 0.0266 ns 1.00
    Box256 PR 31.255 ns 0.0476 ns 1.36

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  5. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-EBGJOG : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-OJCMJM : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 8.182 ns 0.2083 ns 1.00
    Box8 PR 8.215 ns 0.1699 ns 1.00
    Box16 Main 9.263 ns 0.1722 ns 1.00
    Box16 PR 10.371 ns 0.0851 ns 1.12
    Box32 Main 9.760 ns 0.1511 ns 1.00
    Box32 PR 10.452 ns 0.1532 ns 1.07
    Box256 Main 20.108 ns 0.0587 ns 1.00
    Box256 PR 25.360 ns 0.0685 ns 1.26

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  6. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on windows_azure_cascadelake

    BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2314) (Hyper-V)
    azure_cascadelake
      Job-IPMJTS : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-SBELOE : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Job Toolchain Mean Error Ratio
    Box8 Job-IPMJTS \core_root_base\corerun.exe 7.408 ns 0.0326 ns 1.00
    Box8 Job-SBELOE \core_root_diff\corerun.exe 7.356 ns 0.0150 ns 0.99
    Box16 Job-IPMJTS \core_root_base\corerun.exe 9.530 ns 0.2746 ns 1.00
    Box16 Job-SBELOE \core_root_diff\corerun.exe 9.274 ns 0.0650 ns 0.98
    Box32 Job-IPMJTS \core_root_base\corerun.exe 10.907 ns 0.1518 ns 1.00
    Box32 Job-SBELOE \core_root_diff\corerun.exe 10.290 ns 0.0883 ns 0.94
    Box256 Job-IPMJTS \core_root_base\corerun.exe 27.937 ns 0.6091 ns 1.00
    Box256 Job-SBELOE \core_root_diff\corerun.exe 35.048 ns 0.7799 ns 1.26

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  7. EgorBo commented on Apr 29, 2025

    @EgorBo

    @EgorBot -amd -arm -profile -pr 115134

    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        //[Benchmark] public object Box8() => Box(new Buffer8());
        //[Benchmark] public object Box16() => Box(new Buffer16());
        //[Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
    
        [MethodImpl(MethodImplOptions.NoInlining | 
                    MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value;
    }
    
    [InlineArray(1)] public struct Buffer8 {
        long _element0;
    }
    [InlineArray(2)] public struct Buffer16 {
        long _element0;
    }
    [InlineArray(4)] public struct Buffer32 {
        long _element0;
    }
    [InlineArray(32)] public struct Buffer256 {
        long _element0;
    }
  8. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-HRQMTV : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-UZOMQX : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box256 Main 22.54 ns 0.071 ns 1.00
    Box256 PR 30.93 ns 0.305 ns 1.37

    BDN_Artifacts.zip

    Profiling for Bench_Box256:

    SVG flamegraph: Main vs PR 🔥
    Speedscope flamegraph: Main vs PR
    Hot asm code: Main vs PR
    HW counters: Main vs PR


    cc @EgorBo (agent_logs.txt). EgorBot manual: link.

  9. EgorBot commented on Apr 29, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 16 logical and 8 physical cores
      Job-OUOVHC : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-NCCWUS : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box256 Main 20.02 ns 0.041 ns 1.00
    Box256 PR 24.12 ns 0.074 ns 1.20

    BDN_Artifacts.zip

    Profiling for Bench_Box256:

    SVG flamegraph: Main vs PR 🔥
    Speedscope flamegraph: Main vs PR
    Hot asm code: Main vs PR
    HW counters: Main vs PR


    cc @EgorBo (agent_logs.txt). EgorBot manual: link.

  10. am11 commented on Apr 30, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
    
        [MethodImpl(MethodImplOptions.NoInlining | 
                    MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value;
    }
    
    [InlineArray(1)] public struct Buffer8 {
        long _element0;
    }
    [InlineArray(2)] public struct Buffer16 {
        long _element0;
    }
    [InlineArray(4)] public struct Buffer32 {
        long _element0;
    }
    [InlineArray(32)] public struct Buffer256 {
        long _element0;
    }
  11. EgorBot commented on Apr 30, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-WXJUXF : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-FAVVRX : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 8.050 ns 0.2128 ns 1.00
    Box8 PR 7.740 ns 0.1939 ns 0.96
    Box16 Main 8.979 ns 0.1902 ns 1.00
    Box16 PR 9.526 ns 0.1342 ns 1.06
    Box32 Main 9.667 ns 0.1375 ns 1.00
    Box32 PR 10.038 ns 0.0911 ns 1.04
    Box256 Main 20.846 ns 0.0899 ns 1.00
    Box256 PR 21.873 ns 0.0405 ns 1.05

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  12. EgorBot commented on Apr 30, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-OIOKKA : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-GLEHBT : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box8 Main 6.838 ns 0.0177 ns 1.00
    Box8 PR 8.803 ns 0.0259 ns 1.29
    Box16 Main 8.007 ns 0.0509 ns 1.00
    Box16 PR 9.874 ns 0.0984 ns 1.23
    Box32 Main 8.858 ns 0.0815 ns 1.00
    Box32 PR 10.771 ns 0.0904 ns 1.22
    Box256 Main 23.524 ns 0.4937 ns 1.00
    Box256 PR 26.678 ns 0.2183 ns 1.13

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  13. EgorBot commented on Apr 30, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on windows_azure_cascadelake

    BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2314) (Hyper-V)
    azure_cascadelake
      Job-ZYXRAR : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-LWBKNL : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Job Toolchain Mean Error Ratio
    Box8 Job-ZYXRAR \core_root_base\corerun.exe 8.047 ns 0.1354 ns 1.00
    Box8 Job-LWBKNL \core_root_diff\corerun.exe 8.551 ns 0.1443 ns 1.06
    Box16 Job-ZYXRAR \core_root_base\corerun.exe 9.748 ns 0.1908 ns 1.00
    Box16 Job-LWBKNL \core_root_diff\corerun.exe 9.930 ns 0.1363 ns 1.02
    Box32 Job-ZYXRAR \core_root_base\corerun.exe 11.789 ns 0.3932 ns 1.01
    Box32 Job-LWBKNL \core_root_diff\corerun.exe 11.728 ns 0.2900 ns 1.00
    Box256 Job-ZYXRAR \core_root_base\corerun.exe 27.704 ns 0.6367 ns 1.00
    Box256 Job-LWBKNL \core_root_diff\corerun.exe 26.704 ns 0.5666 ns 0.97

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  14. am11 commented on Apr 30, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
    
        [MethodImpl(MethodImplOptions.NoInlining | 
                    MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value;
    }
    
    [InlineArray(1)] public struct Buffer8 {
        long _element0;
    }
    [InlineArray(2)] public struct Buffer16 {
        long _element0;
    }
    [InlineArray(4)] public struct Buffer32 {
        long _element0;
    }
    [InlineArray(32)] public struct Buffer256 {
        long _element0;
    }
  15. EgorBo commented on Apr 30, 2025

    @EgorBo

    @am11 since the regression at this point is arm only, can we invoke the bot for arm only? (I'm running it under my personal azure sub) 🙂

  16. 6 remaining items

  17. am11 commented on Apr 30, 2025

    @am11

    @EgorBot -amd -pr 115134

    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
    
        [MethodImpl(MethodImplOptions.NoInlining)]
        static object Box<T>(T value) => (object)value;
    }
    
    [InlineArray(1)] public struct Buffer8 {
        long _element0;
    }
    [InlineArray(2)] public struct Buffer16 {
        long _element0;
    }
    [InlineArray(4)] public struct Buffer32 {
        long _element0;
    }
    [InlineArray(32)] public struct Buffer256 {
        long _element0;
    }
  18. am11 commented on Apr 30, 2025

    @am11

    Trying out without NoOptimization to rule out tier 0 vs. 1 thing.

  19. EgorBot commented on Apr 30, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-CTGPIB : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-MHMVZT : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 5.982 ns 0.1668 ns 1.00
    Box8 PR 5.575 ns 0.1525 ns 0.93
    Box16 Main 5.910 ns 0.1720 ns 1.00
    Box16 PR 6.317 ns 0.0599 ns 1.07
    Box32 Main 7.420 ns 0.0722 ns 1.00
    Box32 PR 6.544 ns 0.1882 ns 0.88
    Box256 Main 18.983 ns 0.0619 ns 1.00
    Box256 PR 19.036 ns 0.0802 ns 1.00

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  20. am11 commented on May 1, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System;
    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object BoxWithGCRefs() => Box(new StructWithGCReference { o = "foo", o2 = "bar" });
        [Benchmark] public object BoxWithNullableRefs() => Box(new StructWithGCReferenceNullable { o = "baz", o2 = null });
    
        [Benchmark] public object BoxNullableStruct() => Box((StructWithGCReference?)new StructWithGCReference { o = "val", o2 = "ue" });
    
        [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value!;
    }
    
    public struct StructWithGCReference
    {
        public object o;
        public object o2;
    }
    
    public struct StructWithGCReferenceNullable
    {
        public object? o;
        public object? o2;
    }
  21. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-NSZIGQ : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-VEEKAC : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    BoxWithGCRefs Main 10.73 ns 0.106 ns 1.00
    BoxWithGCRefs PR 12.90 ns 0.098 ns 1.20
    BoxWithNullableRefs Main 11.17 ns 0.082 ns 1.00
    BoxWithNullableRefs PR 12.73 ns 0.132 ns 1.14
    BoxNullableStruct Main 51.16 ns 0.147 ns 1.00
    BoxNullableStruct PR 16.58 ns 0.137 ns 0.32

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  22. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-OVZDKT : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-BNEDRN : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    BoxWithGCRefs Main 11.93 ns 0.031 ns 1.00
    BoxWithGCRefs PR 15.34 ns 0.048 ns 1.29
    BoxWithNullableRefs Main 11.78 ns 0.080 ns 1.00
    BoxWithNullableRefs PR 15.17 ns 0.144 ns 1.29
    BoxNullableStruct Main 63.21 ns 0.095 ns 1.00
    BoxNullableStruct PR 18.72 ns 0.051 ns 0.30

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  23. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on windows_azure_cascadelake

    BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2314) (Hyper-V)
    azure_cascadelake
      Job-PWGTSC : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-QIDHVB : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Job Toolchain Mean Error Ratio
    BoxWithGCRefs Job-PWGTSC \core_root_base\corerun.exe 10.36 ns 0.184 ns 1.00
    BoxWithGCRefs Job-QIDHVB \core_root_diff\corerun.exe 13.62 ns 0.184 ns 1.31
    BoxWithNullableRefs Job-PWGTSC \core_root_base\corerun.exe 10.17 ns 0.189 ns 1.00
    BoxWithNullableRefs Job-QIDHVB \core_root_diff\corerun.exe 13.73 ns 0.174 ns 1.35
    BoxNullableStruct Job-PWGTSC \core_root_base\corerun.exe 39.89 ns 0.187 ns 1.00
    BoxNullableStruct Job-QIDHVB \core_root_diff\corerun.exe 15.00 ns 0.124 ns 0.38

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  24. am11 commented on May 1, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System;
    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
        [Benchmark] public object BoxWithGCRefs() => Box(new StructWithGCReference { o = "foo", o2 = "bar" });
        [Benchmark] public object BoxWithNullableRefs() => Box(new StructWithGCReferenceNullable { o = "baz", o2 = null });
    
        [Benchmark] public object BoxNullableStruct() => Box((StructWithGCReference?)new StructWithGCReference { o = "val", o2 = "ue" });
    
        [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value!;
    }
    
    [InlineArray(1)] public struct Buffer8 { long _element0; }
    [InlineArray(2)] public struct Buffer16 { long _element0; }
    [InlineArray(4)] public struct Buffer32 { long _element0; }
    [InlineArray(32)] public struct Buffer256 { long _element0; }
    
    public struct StructWithGCReference
    {
        public object o;
        public object o2;
    }
    
    public struct StructWithGCReferenceNullable
    {
        public object? o;
        public object? o2;
    }
  25. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-CUWEXD : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-RJADKJ : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 7.218 ns 0.1803 ns 1.00
    Box8 PR 17.709 ns 0.1220 ns 2.45
    Box16 Main 8.280 ns 0.1006 ns 1.00
    Box16 PR 18.733 ns 0.1425 ns 2.26
    Box32 Main 9.077 ns 0.2238 ns 1.00
    Box32 PR 18.588 ns 0.1560 ns 2.05
    Box256 Main 20.438 ns 0.0589 ns 1.00
    Box256 PR 30.272 ns 0.0285 ns 1.48
    BoxWithGCRefs Main 11.104 ns 0.1531 ns 1.00
    BoxWithGCRefs PR 22.003 ns 0.3300 ns 1.98
    BoxWithNullableRefs Main 10.825 ns 0.1137 ns 1.00
    BoxWithNullableRefs PR 21.733 ns 0.3773 ns 2.01
    BoxNullableStruct Main 50.523 ns 0.2157 ns 1.00
    BoxNullableStruct PR 26.536 ns 0.0559 ns 0.53

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  26. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-UCWRKH : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-QAWFVT : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box8 Main 4.816 ns 0.0063 ns 1.00
    Box8 PR 17.288 ns 0.0160 ns 3.59
    Box16 Main 6.101 ns 0.0043 ns 1.00
    Box16 PR 18.077 ns 0.0215 ns 2.96
    Box32 Main 6.877 ns 0.0154 ns 1.00
    Box32 PR 18.897 ns 0.1424 ns 2.75
    Box256 Main 21.628 ns 0.3535 ns 1.00
    Box256 PR 34.489 ns 0.2670 ns 1.59
    BoxWithGCRefs Main 11.325 ns 0.0660 ns 1.00
    BoxWithGCRefs PR 26.624 ns 0.1100 ns 2.35
    BoxWithNullableRefs Main 11.093 ns 0.0363 ns 1.00
    BoxWithNullableRefs PR 25.577 ns 0.0343 ns 2.31
    BoxNullableStruct Main 61.906 ns 0.1114 ns 1.00
    BoxNullableStruct PR 29.504 ns 0.0712 ns 0.48

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  27. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on windows_azure_cascadelake

    BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2314) (Hyper-V)
    azure_cascadelake
      Job-MULQPK : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-GWUXGI : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Job Toolchain Mean Error Ratio
    Box8 Job-MULQPK \core_root_base\corerun.exe 6.911 ns 0.0881 ns 1.00
    Box8 Job-GWUXGI \core_root_diff\corerun.exe 14.526 ns 0.0992 ns 2.10
    Box16 Job-MULQPK \core_root_base\corerun.exe 8.478 ns 0.2523 ns 1.00
    Box16 Job-GWUXGI \core_root_diff\corerun.exe 15.370 ns 0.1851 ns 1.82
    Box32 Job-MULQPK \core_root_base\corerun.exe 9.486 ns 0.2009 ns 1.00
    Box32 Job-GWUXGI \core_root_diff\corerun.exe 17.123 ns 0.2982 ns 1.81
    Box256 Job-MULQPK \core_root_base\corerun.exe 25.028 ns 0.5477 ns 1.00
    Box256 Job-GWUXGI \core_root_diff\corerun.exe 33.206 ns 0.5032 ns 1.33
    BoxWithGCRefs Job-MULQPK \core_root_base\corerun.exe 9.225 ns 0.1568 ns 1.00
    BoxWithGCRefs Job-GWUXGI \core_root_diff\corerun.exe 21.091 ns 0.1064 ns 2.29
    BoxWithNullableRefs Job-MULQPK \core_root_base\corerun.exe 9.202 ns 0.1704 ns 1.00
    BoxWithNullableRefs Job-GWUXGI \core_root_diff\corerun.exe 21.066 ns 0.1784 ns 2.29
    BoxNullableStruct Job-MULQPK \core_root_base\corerun.exe 39.276 ns 0.2587 ns 1.00
    BoxNullableStruct Job-GWUXGI \core_root_diff\corerun.exe 21.848 ns 0.2228 ns 0.56

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  28. am11 commented on May 1, 2025

    @am11

    @EgorBot -windows_intel -amd -arm -pr 115134

    using System;
    using System.Runtime.CompilerServices;
    using BenchmarkDotNet.Attributes;
    
    public class Bench
    {
        [Benchmark] public object Box8() => Box(new Buffer8());
        [Benchmark] public object Box16() => Box(new Buffer16());
        [Benchmark] public object Box32() => Box(new Buffer32());
        [Benchmark] public object Box256() => Box(new Buffer256());
    
        [Benchmark] public object BoxWithGCRefs() => Box(new StructWithGCReference { o = "foo", o2 = "bar" });
        [Benchmark] public object BoxWithNullableRefs() => Box(new StructWithGCReferenceNullable { o = "baz", o2 = null });
    
        [Benchmark] public object BoxNullableStruct() => Box((StructWithGCReference?)new StructWithGCReference { o = "val", o2 = "ue" });
    
        [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
        static object Box<T>(T value) => (object)value!;
    }
    
    [InlineArray(1)] public struct Buffer8 { long _element0; }
    [InlineArray(2)] public struct Buffer16 { long _element0; }
    [InlineArray(4)] public struct Buffer32 { long _element0; }
    [InlineArray(32)] public struct Buffer256 { long _element0; }
    
    public struct StructWithGCReference
    {
        public object o;
        public object o2;
    }
    
    public struct StructWithGCReferenceNullable
    {
        public object? o;
        public object? o2;
    }
  29. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_cobalt100

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    azure_cobalt100
      Job-CYGXRB : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
      Job-LMLBVC : .NET 10.0.0 (42.42.42.42424), Arm64 RyuJIT AdvSIMD
    
    Method Toolchain Mean Error Ratio
    Box8 Main 4.934 ns 0.0332 ns 1.00
    Box8 PR 11.740 ns 0.0370 ns 2.38
    Box16 Main 6.163 ns 0.0158 ns 1.00
    Box16 PR 12.168 ns 0.0196 ns 1.97
    Box32 Main 6.857 ns 0.0434 ns 1.00
    Box32 PR 13.149 ns 0.0158 ns 1.92
    Box256 Main 21.906 ns 0.2025 ns 1.00
    Box256 PR 28.323 ns 0.0698 ns 1.29
    BoxWithGCRefs Main 11.670 ns 0.0160 ns 1.00
    BoxWithGCRefs PR 22.417 ns 0.0591 ns 1.92
    BoxWithNullableRefs Main 11.715 ns 0.0519 ns 1.00
    BoxWithNullableRefs PR 22.653 ns 0.0260 ns 1.93
    BoxNullableStruct Main 63.383 ns 0.1313 ns 1.00
    BoxNullableStruct PR 25.803 ns 0.0875 ns 0.41

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  30. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on linux_azure_genoa

    BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 LTS (Noble Numbat)
    AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
      Job-CIBKUY : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-QMPXBZ : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Toolchain Mean Error Ratio
    Box8 Main 7.347 ns 0.1409 ns 1.00
    Box8 PR 14.532 ns 0.1484 ns 1.98
    Box16 Main 8.308 ns 0.2101 ns 1.00
    Box16 PR 15.073 ns 0.0345 ns 1.82
    Box32 Main 9.379 ns 0.1318 ns 1.00
    Box32 PR 15.784 ns 0.1874 ns 1.68
    Box256 Main 20.580 ns 0.1014 ns 1.00
    Box256 PR 26.851 ns 0.0905 ns 1.30
    BoxWithGCRefs Main 10.760 ns 0.0355 ns 1.00
    BoxWithGCRefs PR 18.899 ns 0.2513 ns 1.76
    BoxWithNullableRefs Main 10.743 ns 0.0534 ns 1.00
    BoxWithNullableRefs PR 18.048 ns 0.1430 ns 1.68
    BoxNullableStruct Main 50.283 ns 0.1541 ns 1.00
    BoxNullableStruct PR 22.308 ns 0.0648 ns 0.44

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

  31. EgorBot commented on May 1, 2025

    @EgorBot
    OwnerAuthor

    Benchmark results on windows_azure_cascadelake

    BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.2314) (Hyper-V)
    azure_cascadelake
      Job-OXZEKF : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
      Job-KCBLJT : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
    
    Method Job Toolchain Mean Error Ratio
    Box8 Job-OXZEKF \core_root_base\corerun.exe 8.391 ns 0.0902 ns 1.00
    Box8 Job-KCBLJT \core_root_diff\corerun.exe 11.531 ns 0.1783 ns 1.37
    Box16 Job-OXZEKF \core_root_base\corerun.exe 9.247 ns 0.0651 ns 1.00
    Box16 Job-KCBLJT \core_root_diff\corerun.exe 11.798 ns 0.0696 ns 1.28
    Box32 Job-OXZEKF \core_root_base\corerun.exe 11.593 ns 0.2712 ns 1.00
    Box32 Job-KCBLJT \core_root_diff\corerun.exe 13.827 ns 0.1150 ns 1.19
    Box256 Job-OXZEKF \core_root_base\corerun.exe 36.113 ns 0.7148 ns 1.00
    Box256 Job-KCBLJT \core_root_diff\corerun.exe 42.204 ns 0.9028 ns 1.17
    BoxWithGCRefs Job-OXZEKF \core_root_base\corerun.exe 11.493 ns 0.2196 ns 1.00
    BoxWithGCRefs Job-KCBLJT \core_root_diff\corerun.exe 17.622 ns 0.4346 ns 1.53
    BoxWithNullableRefs Job-OXZEKF \core_root_base\corerun.exe 10.751 ns 0.1022 ns 1.00
    BoxWithNullableRefs Job-KCBLJT \core_root_diff\corerun.exe 17.006 ns 0.0786 ns 1.58
    BoxNullableStruct Job-OXZEKF \core_root_base\corerun.exe 40.809 ns 0.2800 ns 1.00
    BoxNullableStruct Job-KCBLJT \core_root_diff\corerun.exe 17.955 ns 0.0313 ns 0.44

    BDN_Artifacts.zip

    cc @am11 (agent_logs.txt). EgorBot manual: link.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions