Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 38466|Atbildi: 0

[Padomi] Kā saglabāt straumi failā C#/.NET

[Kopēt saiti]
Publicēts 2021-5-16 21:12:58 | | |
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)




Iepriekšējo:NPOI operācija Excel detalizēts skaidrojums
Nākamo:X-Forwarded-Vairākām IP adresēm HTTP pieprasījuma galvenē
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com