Krav: Nyligen, när jag tittat på kunskap<T> som Span och Memory<T>, känner jag att det finns många fördelar med att använda sådana objekt, såsom: direkt åtkomst till minnet (och mycket säkert), minskning av onödig minnesallokering (beroende på scenen, t.ex. substringskärning av strängkonvertering), modifiering av värden i minnet och fortfarande inlärning, inte den djupgående förståelsen.
System.Span<T> är en ny värdetyp i .NET-kärnan. Den stöder en representation av ett sammanhängande område av godtyckligt minne, oavsett om det minnet är kopplat till ett hanterat objekt, tillhandahålls av inbyggd kod via interop, eller finns i stacken. Det gör detta samtidigt som den ger säker åtkomst, med prestandaegenskaper liknande arrays. Vid användning säkerställer Span minnes- och datasäkerhet med liten eller ingen overhead.
Till exempel, om vi använder Substring för att konvertera en sträng till typen int, guid, long osv., kommer vi inte längre att använda det interceptade stränginnehållet, men anrop Substring för att returnera en ny sträng kommer att begära nytt minnesutrymme.
Först introduceras benchmarkingverktyget BenchmarkDotNet, enligt följande:
Testkoden är följande:
Resultaten är följande:
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
|