Ik heb online wat blogposts bekeken over het opslaan van Stream in een bestand,Veel daarvan zijn onjuist。 (Ik vond verschillende problemen: slechte prestaties, abnormaal wanneer de stream te groot is)
Na het krijgen van een stream, hoe sla je deze stream elegant op in code op
De meest elegante methode zou de methode CopyTo of CopyToAsync moeten zijn
hier inputStream.Seek(0, SeekOrigin.Begin); Niet per se, gebruik deze code alsjeblieft volgens je eigen behoeften, zoals dat je alleen de stream van de tiende byte hoeft te kopiëren, enzovoort
Het gebruik van de asynchrone benadering duurt iets langer voor deze schrijf, maar het geeft de algehele prestaties beter en stelt de CPU in staat andere taken uit te voeren
Let op: bij het gebruik van CopyToAsync, vergeet dan niet om 'wait' toe te voegen; bij het uitvoeren van deze code geef je de uitvoering over aan IO, de meeste IO-verwerking vereist geen CPU om te berekenen, waardoor de algehele prestaties beter kunnen zijn
Ook, als de iputStream van buitenaf binnenkomt, raad ik niet aan om hem op deze manier binnen vrij te geven, waarom? Ik gebruikte een goede stream en die werd gestopt toen ik in een bedrijf overviel
De tweede methode is om zelf de geheugenreplicatiecache te beheren, die een extra geheugenkopie bevat
Wat deze methode doet, is je in staat stellen de waarde van een nieuwe byte[1024] aan te passen, waardoor je controle krijgt over de gekopieerde cache
De volgende zijn enkele methoden die niet worden aanbevolen, maar ze zijn handig bij het schrijven
De bovenstaande methode kopieert het geheugen twee keer, en als de inputresource lengte 1G is, neemt het 2G aan resources in beslag
Vergelijkbaar met het bovenstaande is het aanvragen van een grote cache, zoals te zien is in de volgende code
Qua efficiëntie en code-elegantie zijn ze eigenlijk inferieur aan de CopyTo-methode, en dat ook door de stream. Lengte als lengte bepaalt de cache niet, dus het is niet zo goed als de tweede methode
Hieronder staat een super trage methode, één byte bij één byte schrijven is super traag
Overgedragen van:De hyperlink-login is zichtbaar. (Einde)
|