Attribut för jobb, Burst och prestanda
↑Kortfattat
Section titled “Kortfattat”Burst och Job System kan öka prestandan genom att utföra kompatibelt arbete i optimerade jobb. Attributen beskriver också hur data får nås och när minne frigörs. Undantag från säkerhetskontroller kräver extra försiktighet.
Snabbreferens
Section titled “Snabbreferens”| Attribut | Syfte | Gäller för och kräver |
|---|---|---|
[BurstCompile] |
Be Burst att kompilera kompatibla jobb eller metoder till optimerad native-kod. | Job or method · Unity.Burst · Burst package |
[BurstDiscard] |
Utelämna en kompatibel metodkropp från Burst-kompilering. | Method · Unity.Burst · Burst package |
[WriteOnly] |
Markera en native container i ett jobb som skrivbar men inte läsbar. | Job field · Unity.Collections |
[ReadOnly] |
Markera en native container i ett jobb som endast läsbar. | Job field · Unity.Collections |
[DeallocateOnJobCompletion] |
Frigör kompatibla native containers automatiskt när ett jobb avslutas. | Job field · Unity.Collections |
[NativeDisableParallelForRestriction] |
Stäng av en parallell skrivbegränsning för en native container. | Job field · Unity.Collections |
[NativeDisableUnsafePtrRestriction] |
Stäng av säkerhetsbegränsningar på en osäker pekare i ett jobb. | Job field · Unity.Collections.LowLevel.Unsafe |
[Preserve] |
Behåll en typ eller medlem som annars kan tas bort vid managed stripping. | Type or member · UnityEngine.Scripting |
Så väljer du
Section titled “Så väljer du”[BurstCompile]
Section titled “[BurstCompile]”Be Burst att kompilera kompatibla jobb eller metoder till optimerad native-kod.
Använd när: Optimera kompatibla numeriska jobb eller dataorienterade arbetslaster.
Tänk på: Burst är ett separat paket och stöder inte alla funktioner i hanterad C#.
Referens: Unity documentation
[BurstDiscard]
Section titled “[BurstDiscard]”Utelämna en kompatibel metodkropp från Burst-kompilering.
Använd när: Separera en felsökningshjälp som inte ska köras i Burst-kod.
Tänk på: Anta inte att hanterad kod kan köras i ett Burst-jobb bara för att metoden är markerad.
Referens: Unity documentation
[WriteOnly]
Section titled “[WriteOnly]”Markera en native container i ett jobb som skrivbar men inte läsbar.
Använd när: Markera en jobb-buffer som enbart skrivs till under körningen.
Tänk på: Påverkar jobbens säkerhetskontroller och gör inte annan kod trådsäker.
Referens: Unity documentation
[ReadOnly]
Section titled “[ReadOnly]”Markera en native container i ett jobb som endast läsbar.
Använd när: Ge ett jobb åtkomst till en indatasamling utan skrivning.
Tänk på: Kan tillåta parallell läsning men ersätter inte korrekt hantering av livslängd.
Referens: Unity documentation
[DeallocateOnJobCompletion]
Section titled “[DeallocateOnJobCompletion]”Frigör kompatibla native containers automatiskt när ett jobb avslutas.
Använd när: Knyt en kortlivad native-buffers ägarskap till jobbets livscykel.
Tänk på: Gäller endast kompatibla samlingar och allokeringsmönster. Använd inte samlingen efteråt.
Referens: Unity documentation
[NativeDisableParallelForRestriction]
Section titled “[NativeDisableParallelForRestriction]”Stäng av en parallell skrivbegränsning för en native container.
Använd när: Stöd ett bevisat säkert eget indexeringsmönster som standardbegränsningen inte kan beskriva.
Tänk på: Du måste själv säkerställa att skrivningar inte krockar. Attributet tar bort en säkerhetskontroll.
Referens: Unity documentation
[NativeDisableUnsafePtrRestriction]
Section titled “[NativeDisableUnsafePtrRestriction]”Stäng av säkerhetsbegränsningar på en osäker pekare i ett jobb.
Använd när: Integrera noga granskad osäker pekarkod i ett prestandakritiskt jobb.
Tänk på: Riskfylld genväg: pekarens livslängd och parallell åtkomst blir ditt ansvar.
Referens: Unity documentation
[Preserve]
Section titled “[Preserve]”Behåll en typ eller medlem som annars kan tas bort vid managed stripping.
Använd när: Behåll kod som används via reflection eller indirekta referenser i ett spelbygge.
Tänk på: Användbart vid reflection och indirekt upptäckt kod. Verifiera faktiskt länkresultat.
Referens: Unity documentation
Ett skrivskyddat Burst-jobb
Section titled “Ett skrivskyddat Burst-jobb”using Unity.Burst;using Unity.Collections;using Unity.Jobs;
[BurstCompile]public struct SumJob : IJob{ [ReadOnly] public NativeArray<int> Input; public NativeArray<int> Output;
public void Execute() { int sum = 0; for (int i = 0; i < Input.Length; i++) sum += Input[i]; Output[0] = sum; }}Jobbet definierar hur data får användas. Koden som allokerar NativeArray och schemalägger jobbet måste fortfarande slutföra beroendet och frigöra minnet. Deklarationen sköter inte livslängden åt dig.
