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/[email protected]/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;
        }
    }
}

轉載請註明出處:https://www.cnblogs.com/jietian331/p/17147659.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章