Most performance friendly way to "unrender" a GameObject?

If I want to disable an object that is in an object pool system, which method would be the most performance friendly?

  1. Use setactive(false)
  2. Disable the renderers of it and its children
  3. Set its transform to somewhere extremely far away.

Note that the object in question does not move at all, so the only reason for its existence is the renderer.
All three methods work in this situation, but only because the object has a renderer and nothing else.

I tested the three methods myself and found that setting the object transform was the most performance friendly. Like I said, all three are viable options because the object only has a renderer. Thank you to those who posted answers. Also, @crohr, sorry for my stubbornness, but it paid off because my game now runs much faster.

I am now 100% sure but I wouldn’t recommend 3) cause the obkect still is in the scene as before and it doesn’t change that much.
2) would only deactivate all renderes whereas 1) would also set all colliders and other components to inactive.
I so would take 1).

Use SetActive(false). That disables the object completely. So if you have something searching for stuff in the scene by name, Unity won’t go over the disabled objects.
If you just disable the renderer Unity will still check if it should do something with that depending on the rest of the scripts.

Try not to delete objects unless you really need to, as that will make garbage for the collector in the end.

Set active to false! Because then it’s also disabling renderers.

You could also the Destroy(this.GameObject) function if you won’t be needing it anymore.

I agree with Pascal, using SetActive(false) would be the preferred method for deactivating a GameObject for two reasons.

  1. Using SetActive(false) will set the GameObject to be disabled and will disable all components on the GameObject.
  2. SetActive(false) will also disable all of the child GameObjects.

Just remember that any script attached to an object set to Active(false) won’t run, the update function for example will no longer function, and SetActive is also inherited by child objects.
Personally though, I think it’s the best option. If you only need the renderer, then by all means set it to (false) and it’s pretty easy to reference and active stuff via code.