rdInst Speed Comparisons

Last Updated: 26th January 2022

There are a number of different areas for speed comparisions, so this document is broken into sections for each:

Timings are either FPS (frames per second) or the amount of milliseconds a particular function takes. For timing functions (either C++ or Blueprint) the rdActor rdGetFunctionCycles function:

These tests are performed on a 12th gen i7, 64MB DDR4 memory and RTX3070ti.

They are run from PIE in UE5.1 with hardware lumen lighting and shadows turned on. Virtual Shadow map is also enabled.

The Scalability is set at Epic.

For testing performance of things like this normally, it would be better to test it from different views to get a more general idea of how the instances render, but seeing as we’re concentrating more on how they are setup, only one view is used.

Here is a list of the basic timings, just click on the heading to go to more information about the particular tests.

  • In-Game Performance
    • Random Foliage30 different meshes, 2410 instances each = 72,300 instances.
      (note that because of the nature of these times, all the results fluctuate by around 10FPS)
      • Empty Scene: 8.73ms (114.57FPS)
      • Standard Static Meshes: 31.25ms (32FPS) – 22.52ms (82.57FPS)
      • Foliage System: 9.35ms (106.97FPS) – 0.62ms (7.6FPS)
      • rdInst Mananged: 9.31ms (107.39 FPS) – 0.58ms (7.18FPS)
      • rdInst Unmanaged: 9.87ms (101.36 FPS) – 1.14ms (13.21FPS)
      • Blueprint: 9.67ms (103.41 FPS) – 0.94ms (11.16FPS)
  • Editor Performance (coming soon)
  • Adding Instances (Note, with managed rdInst, Setup is done once, then is just loaded like foliage)
    • Random Foliage30 different meshes, 2410 instances each = 72,300 instances.
      • Adding instances from stock HISMC Blueprint: 871.99 ms
      • Adding instances from stock HISMC C++: 645.97ms
      • Adding Instances from rdInst (Managed) Blueprint: 222.32ms
      • Adding Instances using rdInst (Managed) C++: 91.89ms
      • Adding Instances using rdInst (Unmanaged) Blueprint: 205.96ms
      • Adding Instances using rdInst (Unmanaged) C++: 41.75ms
  • Spawning Actors
    • Random Foliage30 different meshes, 100 actors of each = 3,000 actors
      • Blueprint – Native Spawn system – 3729.83 ms (removing existing actors is ~2500ms)
      • C++ – Native Spawn system – 1633.32 ms (removing existing actors is ~600 ms)
      • Blueprint – rdInst Spawn – 1856.06 ms (removing existing actors is ~600 ms)
      • C++ – rdInst Spawn – 1631.83 ms (removing existing actors is ~600 ms)
  • Adding Child Components (coming soon)
  • Spawning Actors from an Actor Pool
    • Rotating Bullet Spread test (timing each bullet “spawn”) 1000 actors pooled (2.08ms to allocate the pool)
      • Spawning from rdInst Actor Pool (BP) – <0.01 ms
      • Spawning from rdInst SpawnActor (BP) – 0.55 ms
      • Spawning from Native SpawnActor (BP) – 0.56 ms