This has been discussed before and is you look for “instancing” in any graphics context you will see lots of stuff.
Batching: faster, takes more memory, best for static objects
Instancing: slower than batching, takes less memory, objects can move just fine
Neither: slowest, takes less memory… if you shared your meshes. Objects can obviously move all over the place.
If you want to draw a whole bunch of complicated objects and move them around, but they are otherwise the same object… instancing is better.
Even if you don’t move them around, instancing may be better.
For example, I use batching for grass but instancing for trees.
Edit: and if you have animation… instancing won’t work.