How to add or destroy object dynamically Without Instantiate?

Hello Everyone,
I am trying to create and destroy objects dynamically for that i am using Instantiate or destroying Instantiate but do we have any other thing to create object dynamically because if i will go with Instantiate then my game performance will be slow…
`
public void create_ins()
{
int X = (int) (camobj - 1);
for(int y = X; y < X + 4 ; y++)
{
for(int x = 0; x < 3 ; x = x + 2)
{
Instantiate(brick,new Vector3(x,y,0),brick.transform.rotation);
}
}

}`

why not just keep all the gameobjects off screen and use an “active” variable to determine whether or not they can do anything.
then when you need them just bring them onto the screen.

//class declaration blahhhh


void Update() {
 if(active)
 {
 //run functions relevant to this gameobject
 }
}

//your other code, triggers, timers whatever can pass the position and the "active" variable to this object when required.

Instantiate is the only way to create gameobjects at runtime using prefabs. If you simply need placeholders for scripts or an empty gameobject you can parent others to or something, you can create a gameobject with normal object oriented instantiation:

GameObject newGO = new GameObject();

Or it’s possible to create GameObjects from the static method in GameObject that instantiates primitives, e.g.:

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

Other than that, Instantiate is the way to do. If it hurts your performance, you should consider splitting your instantiations across several frames using coroutines.

If it’s any consolation, I was told at the Unite conference last week that Instantiate is among the methods they’re investigating for possible ways to multithread, which should remove any rendering hickups it might cause.