When you use standins to load ASS files, Arnold caches the loaded geometry the first time it loads an ASS file, and then reuses that cached geometry for every other standin that references the same ASS file. The Arnold log provides a breakdown of how many unique ASS files were loaded, and how many were reused:
Roughly speaking, this standin caching means that if you have 100 standins that all load the same ASS file, you'll get one set of geometry and 99 instances of that geometry.
Standin caching was first introduced in Arnold 4.0.8:
Auto-instancing of .ass procedurals: Thanks to a new built-in cache, procedural nodes whose dso parameter points to an ASS file can be automatically cached for future reuse. Subsequent procedurals that load the same .ass file will instance the previously loaded geometry, potentially saving tons of both memory and disk I/O. This feature is disabled by default, and can be enabled with the global option enable_procedural_cache.
By Arnold 4.0.10, standin caching was enabled by default:
Improved .ass procedural cache: Cached procedural nodes, i.e. those pointing to the same .ass file on disk, are now directly referenced by one instance node, instead of by a separate instance for each child. This can dramatically reduce the memory footprint in complex scenes, as well as reduce scene loading time. In addition, we have added log stats on how many .ass files have been truly loaded from disk vs found in the cache. Finally, the cache has been extensively and successfully tested in production, so its associated option enable_procedural_cache is therefore now enabled by default.