Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 26039|Atsakyti: 2

[Šaltinis] .net/c# Xml, Json, Hessian, Protocol Buffers serializacijos palyginimas

[Kopijuoti nuorodą]
Paskelbta 2018-04-13 13:23:31 | | | |
Trumpas įvadas

Šiame tinklaraštyje daugiausia lyginamas Xml, Json, Hessian ir Protocol Buffers serializavimo ir deserializavimo našumas, paliekant nuošalyje pagrindines Xml ir Json sąvokas.
Heseno kalba: Heseno kalba yra lengvas nuotolinis įrankishttp įrankis, teikiantis RMI funkcijas naudojant dvejetainį RPC protokolą ir integruotas serializavimo galimybes.
Protokolo buferiai: duomenų mainų iš "Google" formatas, kuris nepriklauso nuo kalbos, o kadangi tai yra dvejetainis formatas, jis yra daug greitesnis nei naudojant xml duomenų mainams ir gali būti naudojamas duomenų perdavimui tarp paskirstytų programų arba duomenų mainams nevienalytėje aplinkoje. Kaip efektyvus ir suderinamas dvejetainių duomenų perdavimo formatas, jis gali būti naudojamas daugelyje sričių, tokių kaip tinklo perdavimas, konfigūracijos failai, duomenų saugojimas ir kt. "Google" teikia "Java", "C++", "Python" diegimus, o dabar internete yra tokių kalbų kaip C# diegimai.

Serializacija ir deserializacija

XML: naudokite XmlSerializer, kuris pateikiamas su .Net.
Json: Jis naudoja ServiceStack.Text, kuris yra našesnis nei Newtonsoft.Json, tačiau greičiausias turėtų būti fastJSON.net.
Hessian: Naudojant HessianCSharp biblioteką, atsisiųstą iš nuget.
Protokolo buferiai: Naudojant protobuf-net, atsisiųstas iš nuget.
Toliau pateikiami teste naudojami objektai.

Bandymo mašinoje naudojamas i7HQ 2.6HZ procesorius.
Štai testo rezultatai
Serializacija


Deserializacija


Baitų ilgis po serializavimo


Pirmiausia pakalbėkime apie serializaciją, čia jis išbandomas atitinkamai 100 kartų, 1000 kartų, 10000 kartų ir 100000 kartų, ordinata yra užbaigimo laikas, vienetas yra milisekundės, galite pamatyti, kad bandant per 10000 kartų, 4 rūšių serializacijos laiko sąnaudos yra labai mažos, visos per 200 milisekundžių, po 10000 kartų, iki 100000 kartų, jie visi pradeda augti, blogiausias yra Xml, geriausias yra protokolo buferiai, bet kai jis yra per 10000 kartų, Heseno kalba yra geresnė už protokolo buferius.
Nėra didelio skirtumo tarp 10 000 deserializacijų, tačiau 10 000 kartų jau matome, kad Heseno kalba užima daugiau laiko, o 100 000 kartų Heseno kalba tiesiogiai viršija Xml, todėl visada galvoju, kad yra problema su mano kodu, o geriausias našumas vis dar yra protokolo buferiai.
Suprantama, kad serializuotas baitų ilgis yra ilgiausias Xml, nes faile yra daug pabaigos žymių (),</Name> o protokolo buferiai vis dar yra geriausias.

Remdamiesi aukščiau pateiktu grafiku, galime beveik greitai daryti išvadą, kad protokolo buferiai yra geriausias, tačiau manau, kad vis tiek turime jį išsamiai įvertinti šiais aspektais:
1. Skaitomumas: Xml ir Json yra tekstas po serializavimo, o skaitomumas yra labai geras, pavyzdžiui, jei viduryje yra klaida, galime lengvai peržiūrėti apsikeistus duomenis ir netgi imituoti duomenis, kuriuos reikia išbandyti; Tiek Heseno, tiek protokolo buferiai yra dvejetainiai, o turinys po serializacijos yra neįskaitomas, o tai turės tam tikros įtakos sistemos trikčių šalinimui.
2. Universalumas: XML ir JSON jau yra seni duomenų mainų formatai, ir tai yra du duomenų mainų tarp bendrųjų sistemų formatai. Tiek Heseno, tiek protokolo buferiai yra palyginti nepopuliarūs ir naudojami mažiau.
3. Patogumas: Heseno kalba iš tikrųjų yra visa RPC sistema, apibrėžkite sąsają serverio pusėje ir įdiekite sąsają, nukopijuokite sąsają į klientą Po nedidelio kodavimo galime iškviesti serverio pusę kaip vietinio metodo iškvietimą, kurio nėra kituose trijuose įrankiuose, o našumas nėra blogas.





Ankstesnis:"Windows" įdiegia .net/c# paslaugų programą
Kitą:"StreamReader" sprendimas iškraipytiems simboliams skaitant failus
 Savininkas| Paskelbta 2023-08-31 20:57:23 |
"MessagePack" ir "protobuf-net" našumo etalonai
https://www.itsvse.com/thread-10655-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com