Що краще, Invoke чи співпрограма?

Використовувати Invoke (або InvokeRepeating) легше, ніж використовувати співпрограму. З іншого боку, Coroutines більш гнучкі. Ви не можете передати параметр викликаному методу, але ви можете зробити це співпрограмі. Інша річ, яку ми повинні згадати, співпрограми є більш сприятливими, ніж Invoke. 18 листопада 2019 р.

Якщо вам потрібно передати параметри своєму методу, подумайте про використання замість цього Coroutine. Співпрограми також забезпечують кращу продуктивність. Інша справа, що співпрограми можуть мати змінний час затримки, while виклик (зокрема, повторення) має лише один і має бути скасований під час зміни затримки.

InvokeRepeating працює лише з назвами рядків для методу, і ви можете скасувати його лише за назвою рядка. Це означає, що ви не можете скасувати повторення окремого виклику, якщо це той самий метод. З іншого боку, ви можете мати унікальні дескриптори для кожної запущеної співпрограми, що означає, що ви можете їх унікально скасувати.

Недоліки. Управління пам'яттю: якщо не обережно керувати, співпрограми можуть призвести до непотрібного використання пам’яті, особливо під час роботи з великими структурами даних. Проблеми: одночасний запуск великої кількості співпрограм може непотрібно зайняти ЦП і призвести до проблем із продуктивністю.

Часте створення та знищення об’єктів у співпрограмі може призвести до проблем із продуктивністю через збирання сміття. Замість цього ви можете використовувати пул об’єктів для повторного використання об’єктів. Використання ключового слова new у циклі співпрограми може призвести до частого збирання сміття, що може спричинити падіння частоти кадрів.

Відносно багато точок даних падають на 200% середньої тривалості запуску або більше. Дивовижний результат полягає в тому, що використання Coroutines потребує приблизно 50% часу запуску порівняно зі стандартним пулом потоків. Отже, загальноприйняте уявлення про те, що Coroutines швидше, ніж Threads, виявляється невірним.