- Home /
InvokeRepeating VS Coroutines [Performance]
Hello everyone.
I was wondering, what is better to use InvokeRepeating or Coroutines? I want to optimize my scripts and instead of calling stuff every frame per seconds inside the Update() function only call the specific function for example every 0.25f seconds. So I decided to use either InvokeRepeating or Coroutines. But I don't know what is better in terms of performance. I wrote couple of simple script. Which example is more optimized?
InvokeRepeating:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraReposition : MonoBehaviour {
[SerializeField] private Camera[] cameras;
[SerializeField] private Transform pos;
public bool forceRePosition;
void Start ()
{
InvokeRepeating("ForceRePosition", 0f, 0.2f);
}
void ForceRePosition ()
{
if (!forceRePosition) return;
cameras[0].gameObject.transform.position = pos.position;
cameras[1].gameObject.transform.position = pos.position;
}
}
Coroutines:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraReposition : MonoBehaviour {
[SerializeField] private Camera[] cameras;
[SerializeField] private Transform pos;
[SerializeField] private float WaitTime = 0.2f;
public bool forceRePosition;
void Start ()
{
StartCoroutine(ForceRePosition(WaitTime));
}
IEnumerator ForceRePosition (float waitTime)
{
while (forceRePosition)
{
yield return new WaitForSeconds(waitTime);
RePosition();
}
}
public void RePosition ()
{
cameras[0].gameObject.transform.position = pos.position;
cameras[1].gameObject.transform.position = pos.position;
}
}
Answer by TheSOULDev · Sep 24, 2017 at 03:49 PM
While invoke repeating is slightly better than coroutines for something static, you should use a coroutine to control a state machine instead so you have as few function calls creating garbage as you can.
Your answer
![](https://koobas.hobune.stream/wayback/20220612135524im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Any costs I should know about associated with InvokeRepeating? 1 Answer
Fire and forget coroutines 1 Answer
Coroutine impact on frame rate 0 Answers