Just for clarification: The performance of your application is bad since the number of draw calls is too high. There are several existing topics in this forum about draw call reduction e.g.:
Using instanced rendering e.g. via THREE.InstancedMesh is one possible approach to improve performance.