Unity has shared a post-mortem discussing the approach they took to convert the FPS Sample from using Particle System to the Visual Effect Graph to take advantage of HDRP.
The post-mortem walks through the entire process of identifying references to Particle Systems in prefabs and code, replacing the instances with placeholders, and filling the effects back in using the Visual Effect Graph.
Here's a brief sample:
QuoteOptimizing a shooting system with VFX Graph
Shooting systems rely on many effects whose performance depends on the pace of the game, the number of players, the playing area topology, and the current game’s state. This implies that many objects can be spawned around (for instance: impacts) and will fill the scene graph with many draw calls.
The FPS implementation was made using a pool of 64 impacts, managed by Entity-Component Systems using a recycling system: 1 Particle System per impact + 1 Audio Source.
The main drawback of this system was that every instance of an impact would lead to a draw call per-system. A constraint that requires using only a few draw calls per effect would, in a worst-case scenario, lead to N times 64 draw calls (N being the number of particle systems that compose each impact), for each kind of impact.
Take a look at the blog post here.