Unity之Burst测试
关于Burst,看下官方介绍:
Burst is a compiler that you can use with Unity's job system to create code that enhances and improves your application's performance.
It translates your code from IL/.NET bytecode to optimized native CPU code that uses the LLVM compiler.
可参考文档:https://docs.unity3d.com/Packages/com.unity.burst@1.8/manual/index.html
测试代码如下:
using System.Collections; using System.Collections.Generic; using Unity.Burst; using Unity.Collections; using Unity.Jobs; using UnityEngine; public class TestBurst : MonoBehaviour { void TestCount() { int sum = 0; for (int i = 0; i < 999999; i++) { sum += i; } } // Update is called once per frame void Update() { // 1. 耗时23ms /* for (int i = 0; i < 10; i++) TestCount(); */ // 2. 耗时0.03ms /* NativeArray<JobHandle> jobHandles = new NativeArray<JobHandle>(10, Allocator.Temp); for (int i = 0; i < 10; i++) { TestJob job = new TestJob(); JobHandle handle = job.Schedule(); jobHandles[i] = handle; } JobHandle.CompleteAll(jobHandles); jobHandles.Dispose(); */ // 3. 耗时0.009ms TestParalleJob jobs = new TestParalleJob(); JobHandle jobHandle = jobs.Schedule(10,32); jobHandle.Complete(); } } /* Burst is a compiler that you can use with Unity's job system to create code that enhances and improves your application's performance. It translates your code from IL/.NET bytecode to optimized native CPU code that uses the LLVM compiler. 文档可参考: https://docs.unity3d.com/Packages/com.unity.burst@1.8/manual/index.html */ [BurstCompile] public struct TestJob : IJob { public void Execute() { int sum = 0; for (int i = 0; i < 999999; i++) { sum += i; } } } [BurstCompile] public struct TestParalleJob : IJobParallelFor { public void Execute(int index) { int sum = 0; for (int i = 0; i < 999999; i++) { sum += i; } } }
profiler截图如下:
执行第一段代码
执行第二段代码
执行第三段代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-02-23 《unity3d动作游戏开发实战》之常用几种插值公式