Skip to content

Reflection Performance Benchmarks

Unity Helpers replaces ad-hoc reflection with cached delegates that favour expression lambdas on IL2CPP-safe platforms and fall back to dynamic IL emit or plain reflection where available. These benchmarks compare raw System.Reflection against the helpers for common access patterns.

Each run updates the table for the current operating system only. Sections that still show _No benchmark data generated yet._ simply have not been executed on that platform.

Windows

Generated on 2026-05-08 04:08:17 UTC

Strategy: Default (auto)

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)23.81M4.99M4.77x
Instance Field Set (boxed)23.25M5.47M4.25x
Static Field Get (boxed)23.45M8.68M2.70x
Static Field Set (boxed)23.68M5.56M4.26x
Instance Property Get (boxed)23.64M22.38M1.06x
Instance Property Set (boxed)20.22M1.96M10.29x
Static Property Get (boxed)18.00M19.96M0.90x
Static Property Set (boxed)20.67M2.90M7.11x
Instance Method Invoke (boxed)14.26M2.01M7.10x
Static Method Invoke (boxed)19.86M2.73M7.27x
Constructor Invoke (boxed)18.76M2.60M7.23x

Typed Access (no boxing)

Scenario Helper (ops/sec) Baseline Delegate (ops/sec) System.Reflection (ops/sec) Speedup vs Delegate Speedup vs Reflection
Instance Field Get (typed)682.40M672.50M4.99M1.01x136.65x
Instance Field Set (typed)655.28M666.57M5.47M0.98x119.89x
Static Field Get (typed)662.61M704.40M8.68M0.94x76.35x
Static Field Set (typed)666.25M673.08M5.56M0.99x119.78x
Instance Property Get (typed)682.28M691.91M22.38M0.99x30.49x
Instance Property Set (typed)618.65M699.50M1.96M0.88x315.03x
Static Property Get (typed)670.50M691.80M19.96M0.97x33.59x
Static Property Set (typed)653.06M663.93M2.90M0.98x224.83x
Instance Method Invoke (typed)641.83M687.16M2.01M0.93x319.63x
Static Method Invoke (typed)660.03M687.85M2.73M0.96x241.58x

Strategy: Expressions

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)18.84M3.12M6.04x
Instance Field Set (boxed)1.90M5.46M0.35x
Static Field Get (boxed)23.16M8.68M2.67x
Static Field Set (boxed)21.85M6.17M3.54x
Instance Property Get (boxed)20.84M19.82M1.05x
Instance Property Set (boxed)21.13M2.05M10.31x
Static Property Get (boxed)16.07M19.55M0.82x
Static Property Set (boxed)21.60M2.90M7.46x
Instance Method Invoke (boxed)16.21M1.97M8.21x
Static Method Invoke (boxed)19.85M2.73M7.27x
Constructor Invoke (boxed)21.50M2.61M8.23x

Typed Access (no boxing)

Scenario Helper (ops/sec) Baseline Delegate (ops/sec) System.Reflection (ops/sec) Speedup vs Delegate Speedup vs Reflection
Instance Field Get (typed)680.40M701.15M3.12M0.97x218.25x
Instance Field Set (typed)651.97M670.03M5.46M0.97x119.51x
Static Field Get (typed)656.65M704.16M8.68M0.93x75.65x
Static Field Set (typed)695.48M667.70M6.17M1.04x112.79x
Instance Property Get (typed)688.73M700.55M19.82M0.98x34.76x
Instance Property Set (typed)625.16M711.76M2.05M0.88x305.00x
Static Property Get (typed)666.70M693.34M19.55M0.96x34.11x
Static Property Set (typed)651.20M664.29M2.90M0.98x224.90x
Instance Method Invoke (typed)639.52M692.53M1.97M0.92x323.96x
Static Method Invoke (typed)661.92M685.72M2.73M0.97x242.33x

Strategy: Dynamic IL

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)22.39M7.23M3.09x
Instance Field Set (boxed)22.97M5.44M4.22x
Static Field Get (boxed)23.13M8.62M2.68x
Static Field Set (boxed)21.14M3.73M5.66x
Instance Property Get (boxed)21.67M21.01M1.03x
Instance Property Set (boxed)21.50M2.04M10.52x
Static Property Get (boxed)19.17M4.00M4.79x
Static Property Set (boxed)1.46M2.14M0.68x
Instance Method Invoke (boxed)17.48M1.99M8.76x
Static Method Invoke (boxed)22.05M2.76M8.00x
Constructor Invoke (boxed)21.97M2.60M8.45x

Typed Access (no boxing)

Scenario Helper (ops/sec) Baseline Delegate (ops/sec) System.Reflection (ops/sec) Speedup vs Delegate Speedup vs Reflection
Instance Field Get (typed)674.63M671.86M7.23M1.00x93.25x
Instance Field Set (typed)650.59M666.95M5.44M0.98x119.54x
Static Field Get (typed)664.67M705.04M8.62M0.94x77.15x
Static Field Set (typed)668.36M666.33M3.73M1.00x179.07x
Instance Property Get (typed)685.34M696.24M21.01M0.98x32.62x
Instance Property Set (typed)624.44M703.63M2.04M0.89x305.67x
Static Property Get (typed)666.45M693.56M4.00M0.96x166.47x
Static Property Set (typed)649.92M663.82M2.14M0.98x303.92x
Instance Method Invoke (typed)628.36M687.84M1.99M0.91x315.12x
Static Method Invoke (typed)661.83M685.32M2.76M0.97x240.04x

Strategy: Reflection Fallback

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)7.47M7.34M1.02x
Instance Field Set (boxed)3.57M5.40M0.66x
Static Field Get (boxed)8.75M8.61M1.02x
Static Field Set (boxed)3.65M6.16M0.59x
Instance Property Get (boxed)18.75M19.68M0.95x
Instance Property Set (boxed)2.07M2.06M1.00x
Static Property Get (boxed)13.46M19.11M0.70x
Static Property Set (boxed)2.80M2.89M0.97x
Instance Method Invoke (boxed)1.96M2.00M0.98x
Static Method Invoke (boxed)2.72M2.72M1.00x
Constructor Invoke (boxed)1.80M1.97M0.91x

Typed Access (no boxing)

Scenario Helper (ops/sec) Baseline Delegate (ops/sec) System.Reflection (ops/sec) Speedup vs Delegate Speedup vs Reflection
Instance Field Get (typed)7.47M671.96M7.34M0.01x1.02x
Instance Field Set (typed)5.40M666.41M5.40M0.01x1.00x
Static Field Get (typed)8.74M704.42M8.61M0.01x1.02x
Static Field Set (typed)4.23M668.03M6.16M0.01x0.69x
Instance Property Get (typed)683.71M697.33M19.68M0.98x34.73x
Instance Property Set (typed)625.56M704.49M2.06M0.89x303.34x
Static Property Get (typed)653.67M693.08M19.11M0.94x34.20x
Static Property Set (typed)672.77M663.41M2.89M1.01x233.07x
Instance Method Invoke (typed)640.56M688.12M2.00M0.93x320.73x
Static Method Invoke (typed)663.79M685.82M2.72M0.97x244.25x

macOS

No benchmark data generated yet.

Linux

No benchmark data generated yet.

Unknown / Other

No benchmark data generated yet.