সিরিয়ালাইজারদের উপর আমরা কেবলমাত্র একটি অভ্যন্তরীণ গবেষণা করেছি, এখানে কিছু ফলাফল রয়েছে (আমার ভবিষ্যতের রেফারেন্সের জন্যও!)
ব্যাস্ততা = সিরিয়ালাইজেশন + আরপিসি স্ট্যাক
সবচেয়ে বড় পার্থক্য হ'ল থ্রিফ্টটি কেবল একটি সিরিয়ালাইজেশন প্রোটোকল নয়, এটি একটি সম্পূর্ণ প্রস্ফুটিত আরপিসি স্ট্যাক যা আধুনিক দিনের এসওএপি স্ট্যাকের মতো। সুতরাং ধারাবাহিকতাতে পর, বস্তু পারে (কিন্তু বাধ্যতামূলক) মেশিনের মধ্যে TCP / IP এর মাধ্যমে পাঠানো হবে। এসওএপি-তে আপনি একটি ডাব্লুএসডিএল ডকুমেন্ট দিয়ে শুরু করেছিলেন যা উপলভ্য পরিষেবাদি (দূরবর্তী পদ্ধতি) এবং প্রত্যাশিত আর্গুমেন্ট / অবজেক্টগুলিকে পুরোপুরি বর্ণনা করে। এই বিষয়গুলি এক্সএমএলের মাধ্যমে প্রেরণ করা হয়েছিল। থ্রিফ্টে .thrift ফাইলটি উপলভ্য পদ্ধতিগুলি, প্রত্যাশিত প্যারামিটার অবজেক্টগুলি এবং অবজেক্টগুলিকে উপলভ্য সিরিয়ালাইজারগুলির মধ্যে একটির সাথে ক্রমিক করা হয় (সাথে Compact Protocol
একটি দক্ষ বাইনারি প্রোটোকল, যা উত্পাদন সর্বাধিক জনপ্রিয়)।
ASN.1 = গ্র্যান্ড বাবা
এএসএন .১০ কে দশকের দশকে টেলিকম লোকেরা ডিজাইন করেছিল এবং সাম্প্রতিক সিরিয়ালাইজের তুলনায় সীমিত গ্রন্থাগার সহায়তার কারণে ব্যবহার করা বিশ্রী which দুটি ভেরিয়েন্ট রয়েছে, ডিইআর (বাইনারি) এনকোডিং এবং পিইএম (এসসিআই) এনকোডিং। দু'টিই দ্রুত, তবে দু'জনের DER দ্রুত এবং আরও বেশি আকারের দক্ষ। আসলে এএসএন 1 ডায়ার সহজেই 30 বছর ধরে ডিজাইন করা সিরিয়ালাইজারগুলি (এবং কখনও কখনও বীট করে) রাখতে পারেনিজেই পরে, এটির জন্য ইঞ্জিনিয়ার ডিজাইন well এটি খুব কমপ্যাক্ট, প্রোটোকল বাফারস এবং থ্রিফ্টের চেয়ে ছোট, কেবল অভ্রের দ্বারা পরাজিত। ইস্যুটির সমর্থনের জন্য দুর্দান্ত গ্রন্থাগার রয়েছে এবং এই মুহূর্তে বাউন্সি ক্যাসল সি # / জাভার পক্ষে সেরা বলে মনে হচ্ছে। ASN.1 সুরক্ষা এবং ক্রিপ্টো সিস্টেমে রাজা এবং চলে যাচ্ছে না, সুতরাং 'ভবিষ্যতের প্রমাণীকরণ' সম্পর্কে উদ্বিগ্ন হবেন না। কেবল একটি ভাল গ্রন্থাগার পান ...
বার্তাপ্যাক = প্যাকের মাঝখানে
এটি খারাপ নয় তবে এটি দ্রুততমও নয়, সবচেয়ে ছোটও নয় বা সেরা সমর্থিতও নয়। এটি চয়ন করার কোনও উত্পাদন কারণ নেই।
সাধারণ
এর বাইরেও তারা মোটামুটি মিল। বেশিরভাগটি মূল নীতিটির বৈকল্পিক TLV: Type-Length-Value
।
প্রোটোকল বাফারস (গুগল উদ্ভূত), অভ্র (অ্যাপাচি ভিত্তিক, হ্যাডোপে ব্যবহৃত হয়েছে), থ্রিফ্ট (ফেসবুক উত্পন্ন, এখন অ্যাপাচি প্রকল্প) এবং এএসএন 1 (টেলিকম উদ্ভূত) সবকটি কোড জেনারেশনের কিছু স্তরের সাথে জড়িত যেখানে আপনি প্রথমে একটি সিরিয়ালে আপনার ডেটা প্রকাশ করেন বিশিষ্ট বিন্যাস, তারপরে সিরিয়ালাইজার "সংকলক" এই code-gen
পর্বের মাধ্যমে আপনার ভাষার জন্য উত্স কোড উত্পন্ন করবে । আপনার অ্যাপ্লিকেশন উত্স এর পরে এই code-gen
ক্লাসগুলি আইওয়ের জন্য ব্যবহার করে । নোট করুন যে কয়েকটি বাস্তবায়ন (যেমন: মাইক্রোসফ্টের অভ্র লাইব্রেরি বা মার্ক গ্যাভেলের প্রোটো বুফ.এনইটিটি) আপনাকে সরাসরি আপনার অ্যাপ স্তরের পোকো / পোজো অবজেক্টগুলিকে সাজাতে দেয় এবং তারপরে গ্রন্থাগারটি কোনও কোড-জেনের ক্লাসের পরিবর্তে সরাসরি সেগুলি সজ্জিত ক্লাসগুলি ব্যবহার করে। আমরা এই অফারটিকে একটি উন্নত পারফরম্যান্স দেখেছি যেহেতু এটি কোনও অবজেক্ট কপির স্টেজ (অ্যাপ্লিকেশন স্তরের POCO / POJO ক্ষেত্রগুলি থেকে কোড-জেন ক্ষেত্রগুলিতে) সরিয়ে দেয়।
কিছু ফলাফল এবং খেলতে একটি লাইভ প্রকল্প
এই প্রকল্পটি ( https://github.com/sidshetye/SerializerCompare ) সি # বিশ্বে গুরুত্বপূর্ণ সিরিয়ালাইজারগুলির সাথে তুলনা করে। ইতিমধ্যে জাভা লোকদের মধ্যে একই জাতীয় কিছু রয়েছে ।
1000 iterations per serializer, average times listed
Sorting result by size
Name Bytes Time (ms)
------------------------------------
Avro (cheating) 133 0.0142
Avro 133 0.0568
Avro MSFT 141 0.0051
Thrift (cheating) 148 0.0069
Thrift 148 0.1470
ProtoBuf 155 0.0077
MessagePack 230 0.0296
ServiceStackJSV 258 0.0159
Json.NET BSON 286 0.0381
ServiceStackJson 290 0.0164
Json.NET 290 0.0333
XmlSerializer 571 0.1025
Binary Formatter 748 0.0344
Options: (T)est, (R)esults, s(O)rt order, (S)erializer output, (D)eserializer output (in JSON form), (E)xit
Serialized via ASN.1 DER encoding to 148 bytes in 0.0674ms (hacked experiment!)