2022-06-23
4576
#unity
James LaFritz
120597
Jun 23, 2022 â‹… 16 min read

Performance in Unity: async, await, and Tasks vs. coroutines, C# Job System, and burst compiler

James LaFritz I have been using the Unity Game Engine since 2015 and programming in C# since 2006. I started off as a hobbyist and developed it into a career with GameDevHQ. You can find me at GameDevHQ, GitHub, or my blog.

Recent posts:

TypeScript logo over a pink and white background.

Drizzle vs. Prisma: Which ORM is best for your project?

Compare Prisma and Drizzle ORMs to learn their differences, strengths, and weaknesses for data access and migrations.

Temitope Oyedele
Nov 21, 2024 â‹… 10 min read
Practical Implementation Of The Rule Of Least Power For Developers

Practical implementation of the Rule of Least Power for developers

It’s easy for devs to default to JavaScript to fix every problem. Let’s use the RoLP to find simpler alternatives with HTML and CSS.

Timonwa Akintokun
Nov 21, 2024 â‹… 8 min read
Rust logo over black marble background.

Handling memory leaks in Rust

Learn how to manage memory leaks in Rust, avoid unsafe behavior, and use tools like weak references to ensure efficient programs.

Ukeje Goodness
Nov 20, 2024 â‹… 4 min read
Robot pretending to be a person.

Using curl-impersonate in Node.js to avoid blocks

Bypass anti-bot measures in Node.js with curl-impersonate. Learn how it mimics browsers to overcome bot detection for web scraping.

Antonello Zanini
Nov 20, 2024 â‹… 13 min read
View all posts

4 Replies to "Performance in Unity: <code>async</code>, <code>await</code>, and <code>Tasks</code> vs. coroutines, C# Job System, and burst compiler"

  1. “Next, we start the task t1.wait. Lastly, we wait for the task to complete with t1.wait.”
    Am I missing something here, or is the point that we start the task and wait for it to complete in a single statement?

  2. It should have been t1.run to start the task and t1.wait to wait for it to complete. You can do it in one line with await t1.Run or using the factory method. The point is to show different ways if starting and waiting for tasks to complete.

    Typically you want to start all of the tasks. So they are all running in parallel, then you wait for a specific task to complete before moving on to other things, it really depends on what you are trying to accomplish.

    You might want to run one task and wait for it to complete before starting other task if they depend on things from the first task.

  3. Typically it’s not tasks run on the caller’s thread it’s that they synchronize back to the caller’s thread. Are you saying Unity is forcing Tasks to run on the main thread or that because you’re not using ConfigureAwait they’re synchronized to the Unity’s main thread by default?

  4. The parameter passed to the method version is 50,000, but to the async and coroutine versions it is 5,000. Yeah, that’s going to impact the testing.

Leave a Reply