Krav: Nylig, etter å ha sett på kunnskap<T> som Span og Memory<T>, føler jeg at det er mange fordeler med å bruke slike objekter, som: direkte tilgang til minnet (og svært sikkert), reduksjon av unødvendig minneallokering (avhengig av scenen, f.eks. substring-interception av strengkonvertering), modifisering av verdier i minnet, og fortsatt læring, ikke den dype forståelsen.
System.Span<T> er en ny verditype i .NET-kjernen. Den støtter en representasjon av et sammenhengende område med vilkårlig minne, enten dette minnet er tilknyttet et administrert objekt, levert av native kode via interop, eller befinner seg i stakken. Det gjør dette samtidig som den gir sikker tilgang, med ytelsesegenskaper som ligner arrays. I bruk sikrer Span minne- og datasikkerhet med liten eller ingen overhead.
For eksempel, hvis vi bruker Substring for å konvertere en streng til typene int, guid, long osv., vil vi ikke lenger bruke innholdet i den avlyttede strengen, men å kalle Substring for å returnere en ny streng vil be om ny minneplass.
Først introduseres Benchmarking-verktøyet BenchmarkDotNet, som følger:
Testkoden er som følger:
Resultatene er som følger:
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
|