Apskatīju dažus emuāra ierakstus tiešsaistē par straumes saglabāšanu failā,Daudzi ir nepareizi。 (Es atradu vairākas problēmas: slikta veiktspēja, nenormāla, ja straume ir pārāk liela)
Pēc straumes iegūšanas, kā eleganti saglabāt šo straumi kodā
Viselegantākajai metodei vajadzētu būt CopyTo vai CopyToAsync metodei
šeit inputStream.Seek(0, SeekOrigin.Begin); Ne obligāti, lūdzu, izmantojiet šo kodu atbilstoši savām vajadzībām, piemēram, jums ir nepieciešams tikai kopēt straumi no 10. baita utt
Asinhronās pieejas izmantošana prasīs nedaudz ilgāku laiku, bet tas nodrošinās labāku vispārējo veiktspēju un ļaus CPU veikt citus uzdevumus
Ņemiet vērā, ka, izmantojot CopyToAsync, neaizmirstiet pievienot gaidīt, izpildot šo kodu, jūs nodosit izpildi IO, lielākajai daļai IO apstrādes nav nepieciešams CPU, lai aprēķinātu, lai kopējā veiktspēja varētu būt labāka
Turklāt, ja iputStream ienāk no ārpuses, tad es neiesaku to atbrīvot šajā metodē, kāpēc? Es izmantoju labu straumi, un tas tika nogalināts, kad es izgāju biznesā
Otrā metode ir pats kontrolēt atmiņas replicēšanas kešatmiņu, kurai būs papildu atmiņas kopija
Šī metode ļauj modificēt jaunā baita[1024] vērtību, dodot jums kontroli pār kopēto kešatmiņu
Nākamais ir dažas metodes, kas nav ieteicamas, bet tās ir ērtas rakstot
Iepriekš minētā metode divreiz kopēs atmiņu, un, ja ievades resursa garums ir 1G, tas aizņems 2G resursu
Līdzīgi kā iepriekš minēts, ir pieprasīt lielu kešatmiņu, kā parādīts šajā kodā
Efektivitātes un koda elegances ziņā tie faktiski ir zemāki par CopyTo metodi un straumes dēļ. Garums kā garums nenosaka kešatmiņu, tāpēc tas nav tik labs kā otrā metode
Zemāk ir ļoti lēna metode, viena baita rakstīšana ir ļoti lēna
Pārcelts no:Hipersaites pieteikšanās ir redzama. (Beigas)
|