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-01-12 01:50:03 UTC

Strategy: Default (auto)

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)25.21M6.69M3.77x
Instance Field Set (boxed)22.18M5.50M4.03x
Static Field Get (boxed)16.53M2.71M6.09x
Static Field Set (boxed)18.01M4.92M3.66x
Instance Property Get (boxed)28.85M25.19M1.15x
Instance Property Set (boxed)24.78M1.49M16.61x
Static Property Get (boxed)21.82M24.49M0.89x
Static Property Set (boxed)26.46M2.54M10.42x
Instance Method Invoke (boxed)20.55M1.71M11.99x
Static Method Invoke (boxed)25.30M2.68M9.42x
Constructor Invoke (boxed)23.48M2.52M9.33x

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)650.81M661.45M6.69M0.98x97.25x
Instance Field Set (typed)653.34M660.94M5.50M0.99x118.80x
Static Field Get (typed)663.07M687.03M2.71M0.97x244.39x
Static Field Set (typed)681.63M670.11M4.92M1.02x138.44x
Instance Property Get (typed)685.44M692.09M25.19M0.99x27.21x
Instance Property Set (typed)661.24M701.70M1.49M0.94x443.26x
Static Property Get (typed)652.49M685.16M24.49M0.95x26.64x
Static Property Set (typed)677.05M657.03M2.54M1.03x266.65x
Instance Method Invoke (typed)686.13M685.59M1.71M1.00x400.58x
Static Method Invoke (typed)659.66M678.18M2.68M0.97x245.75x

Strategy: Expressions

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)24.78M6.08M4.07x
Instance Field Set (boxed)28.58M5.48M5.21x
Static Field Get (boxed)20.95M8.51M2.46x
Static Field Set (boxed)27.73M4.57M6.06x
Instance Property Get (boxed)21.15M3.49M6.06x
Instance Property Set (boxed)12.82M2.02M6.34x
Static Property Get (boxed)22.50M20.45M1.10x
Static Property Set (boxed)20.66M2.88M7.17x
Instance Method Invoke (boxed)23.90M1.98M12.08x
Static Method Invoke (boxed)27.12M2.21M12.27x
Constructor Invoke (boxed)27.01M2.54M10.65x

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)692.43M658.49M6.08M1.05x113.81x
Instance Field Set (typed)651.66M657.97M5.48M0.99x118.84x
Static Field Get (typed)647.30M683.07M8.51M0.95x76.02x
Static Field Set (typed)669.78M656.50M4.57M1.02x146.40x
Instance Property Get (typed)676.92M684.18M3.49M0.99x194.03x
Instance Property Set (typed)657.90M691.31M2.02M0.95x325.26x
Static Property Get (typed)643.98M684.71M20.45M0.94x31.49x
Static Property Set (typed)669.72M653.78M2.88M1.02x232.38x
Instance Method Invoke (typed)680.33M680.42M1.98M1.00x343.95x
Static Method Invoke (typed)653.83M674.42M2.21M0.97x295.69x

Strategy: Dynamic IL

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)27.70M5.80M4.77x
Instance Field Set (boxed)28.24M5.45M5.18x
Static Field Get (boxed)21.57M8.41M2.56x
Static Field Set (boxed)25.65M6.16M4.17x
Instance Property Get (boxed)18.83M22.95M0.82x
Instance Property Set (boxed)25.31M1.98M12.80x
Static Property Get (boxed)23.51M8.69M2.71x
Static Property Set (boxed)2.06M2.86M0.72x
Instance Method Invoke (boxed)23.09M2.00M11.56x
Static Method Invoke (boxed)27.05M2.12M12.75x
Constructor Invoke (boxed)26.10M2.52M10.36x

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)662.00M685.29M5.80M0.97x114.09x
Instance Field Set (typed)654.77M661.50M5.45M0.99x120.17x
Static Field Get (typed)657.70M683.29M8.41M0.96x78.17x
Static Field Set (typed)675.09M659.39M6.16M1.02x109.61x
Instance Property Get (typed)673.39M690.30M22.95M0.98x29.34x
Instance Property Set (typed)652.07M693.53M1.98M0.94x329.72x
Static Property Get (typed)648.59M682.82M8.69M0.95x74.63x
Static Property Set (typed)671.01M654.32M2.86M1.03x234.23x
Instance Method Invoke (typed)690.97M686.98M2.00M1.01x345.91x
Static Method Invoke (typed)660.09M679.79M2.12M0.97x311.08x

Strategy: Reflection Fallback

Boxed Access (object)

Scenario Helper (ops/sec) System.Reflection (ops/sec) Speedup vs Reflection
Instance Field Get (boxed)7.48M5.76M1.30x
Instance Field Set (boxed)5.57M5.47M1.02x
Static Field Get (boxed)7.71M7.19M1.07x
Static Field Set (boxed)6.01M6.13M0.98x
Instance Property Get (boxed)21.09M18.38M1.15x
Instance Property Set (boxed)2.09M2.06M1.01x
Static Property Get (boxed)20.07M23.51M0.85x
Static Property Set (boxed)2.88M2.02M1.42x
Instance Method Invoke (boxed)1.99M1.98M1.01x
Static Method Invoke (boxed)2.69M2.72M0.99x
Constructor Invoke (boxed)2.55M2.50M1.02x

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)5.24M662.95M5.76M0.01x0.91x
Instance Field Set (typed)5.46M668.23M5.47M0.01x1.00x
Static Field Get (typed)8.64M683.37M7.19M0.01x1.20x
Static Field Set (typed)4.77M661.19M6.13M0.01x0.78x
Instance Property Get (typed)675.25M683.53M18.38M0.99x36.75x
Instance Property Set (typed)655.22M704.28M2.06M0.93x317.56x
Static Property Get (typed)652.21M691.83M23.51M0.94x27.75x
Static Property Set (typed)678.92M659.94M2.02M1.03x335.95x
Instance Method Invoke (typed)692.36M685.00M1.98M1.01x350.50x
Static Method Invoke (typed)661.40M678.90M2.72M0.97x242.98x

macOS

No benchmark data generated yet.

Linux

No benchmark data generated yet.

Unknown / Other

No benchmark data generated yet.