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-09-14 05:37:47 UTC

Strategy: Default (auto)

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)26.97M4.87M5.54x
Instance Field Set (boxed)17.97M5.68M3.17x
Static Field Get (boxed)9.15M2.73M3.36x
Static Field Set (boxed)3.31M964.1K3.44x
Instance Property Get (boxed)5.27M26.16M0.20x
Instance Property Set (boxed)10.02M1.89M5.31x
Static Property Get (boxed)19.60M12.95M1.51x
Static Property Set (boxed)19.59M1.61M12.14x
Instance Method Invoke (boxed)25.20M1.84M13.71x
Static Method Invoke (boxed)7.41M2.61M2.84x
Constructor Invoke (boxed)23.17M1.00M23.09x

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)580.66M670.86M4.87M0.87x119.20x
Instance Field Set (typed)597.19M644.34M5.68M0.93x105.23x
Static Field Get (typed)618.28M709.36M2.73M0.87x226.87x
Static Field Set (typed)620.63M672.68M964.1K0.92x643.71x
Instance Property Get (typed)564.40M684.63M26.16M0.82x21.58x
Instance Property Set (typed)626.94M701.72M1.89M0.89x332.22x
Static Property Get (typed)618.67M683.45M12.95M0.91x47.76x
Static Property Set (typed)597.69M662.32M1.61M0.90x370.17x
Instance Method Invoke (typed)623.14M667.81M1.84M0.93x339.00x
Static Method Invoke (typed)577.86M657.41M2.61M0.88x221.54x

Strategy: Expressions

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)26.82M4.68M5.73x
Instance Field Set (boxed)17.02M5.42M3.14x
Static Field Get (boxed)10.74M7.70M1.39x
Static Field Set (boxed)23.06M3.14M7.35x
Instance Property Get (boxed)27.42M10.48M2.62x
Instance Property Set (boxed)23.17M1.09M21.26x
Static Property Get (boxed)27.50M8.67M3.17x
Static Property Set (boxed)25.82M1.18M21.93x
Instance Method Invoke (boxed)25.81M1.84M14.04x
Static Method Invoke (boxed)7.47M2.49M3.00x
Constructor Invoke (boxed)23.42M1.11M21.01x

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)587.94M654.83M4.68M0.90x125.63x
Instance Field Set (typed)631.27M665.34M5.42M0.95x116.55x
Static Field Get (typed)598.87M697.71M7.70M0.86x77.75x
Static Field Set (typed)604.51M658.34M3.14M0.92x192.69x
Instance Property Get (typed)548.18M688.82M10.48M0.80x52.30x
Instance Property Set (typed)627.09M701.69M1.09M0.89x575.56x
Static Property Get (typed)608.80M683.92M8.67M0.89x70.19x
Static Property Set (typed)624.94M643.74M1.18M0.97x530.79x
Instance Method Invoke (typed)612.01M678.22M1.84M0.90x332.79x
Static Method Invoke (typed)586.74M652.85M2.49M0.90x235.86x

Strategy: Dynamic IL

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)26.53M4.88M5.44x
Instance Field Set (boxed)17.71M5.41M3.27x
Static Field Get (boxed)10.73M8.12M1.32x
Static Field Set (boxed)22.09M3.34M6.62x
Instance Property Get (boxed)26.94M10.61M2.54x
Instance Property Set (boxed)23.35M872.4K26.76x
Static Property Get (boxed)27.34M4.01M6.81x
Static Property Set (boxed)4.04M671.3K6.01x
Instance Method Invoke (boxed)1.66M1.15M1.44x
Static Method Invoke (boxed)26.87M2.62M10.27x
Constructor Invoke (boxed)9.88M2.50M3.96x

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)596.30M702.60M4.88M0.85x122.21x
Instance Field Set (typed)602.42M653.76M5.41M0.92x111.31x
Static Field Get (typed)617.94M680.06M8.12M0.91x76.06x
Static Field Set (typed)621.50M646.50M3.34M0.96x186.31x
Instance Property Get (typed)558.13M676.35M10.61M0.83x52.58x
Instance Property Set (typed)610.32M699.18M872.4K0.87x699.61x
Static Property Get (typed)629.81M667.66M4.01M0.94x156.91x
Static Property Set (typed)596.33M633.30M671.3K0.94x888.31x
Instance Method Invoke (typed)601.44M678.52M1.15M0.89x523.14x
Static Method Invoke (typed)601.74M682.07M2.62M0.88x230.04x

Strategy: Reflection Fallback

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)6.99M6.94M1.01x
Instance Field Set (boxed)5.65M2.22M2.55x
Static Field Get (boxed)7.79M7.94M0.98x
Static Field Set (boxed)6.40M6.33M1.01x
Instance Property Get (boxed)9.76M24.66M0.40x
Instance Property Set (boxed)1.17M2.02M0.58x
Static Property Get (boxed)23.87M6.23M3.83x
Static Property Set (boxed)2.77M2.80M0.99x
Instance Method Invoke (boxed)1.86M1.83M1.02x
Static Method Invoke (boxed)2.57M2.52M1.02x
Constructor Invoke (boxed)2.42M2.35M1.03x

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)2.19M687.76M6.94M0.00x0.32x
Instance Field Set (typed)5.56M663.47M2.22M0.01x2.51x
Static Field Get (typed)7.94M692.45M7.94M0.01x1.00x
Static Field Set (typed)6.14M658.82M6.33M0.01x0.97x
Instance Property Get (typed)552.52M696.34M24.66M0.79x22.40x
Instance Property Set (typed)603.84M690.68M2.02M0.87x299.17x
Static Property Get (typed)611.56M660.91M6.23M0.93x98.18x
Static Property Set (typed)603.81M643.88M2.80M0.94x215.53x
Instance Method Invoke (typed)598.18M684.02M1.83M0.87x326.27x
Static Method Invoke (typed)579.89M659.73M2.52M0.88x230.09x

macOS

No benchmark data generated yet.

Linux

No benchmark data generated yet.

Unknown / Other

No benchmark data generated yet.