সত্যিই দুর্দান্ত বিষয় এবং কয়েকটি উত্তর পড়ার পরে, আমি এই বিষয়টিতে আমার পরীক্ষাগুলি ভাগ করতে চাই।
আমি এমন একটি ব্যবহারের কেস পেয়েছি যেখানে ডাটাবেসের সাথে কথা বলার সময় প্রায় প্রতিটি "বিশাল" টেবিলটি জিজ্ঞাসা করা উচিত (কেন কেবল একটি সত্য জিজ্ঞাসা করবেন না)। ডাটাবেস ক্যাচিং সিস্টেমটি যথাযথ নয় কারণ এটি বিভিন্ন অনুরোধগুলি ক্যাশে করবে না, তাই আমি যদিও পিএইচপি ক্যাচিং সিস্টেম সম্পর্কে।
আমি চেষ্টা করেছিলাম apcu
তবে এটি প্রয়োজনীয়তার সাথে খাপ খায় না, এক্ষেত্রে স্মৃতিশক্তি যথেষ্ট নির্ভরযোগ্য নয়। পরবর্তী পদক্ষেপ ছিল সিরিয়ালাইজেশন সহ একটি ফাইলের ক্যাশে করা।
সারণীতে 18 টি কলাম সহ 14355 টি প্রবেশ রয়েছে, সেগুলি সিরিয়ালযুক্ত ক্যাশে পড়ার জন্য আমার পরীক্ষা এবং পরিসংখ্যান:
তাদেরকে JSON:
যেমনটি আপনি সমস্তই বলেছিলেন, json_encode
/ এর সাথে সবচেয়ে বড় অসুবিধা json_decode
হ'ল এটি সবকিছুকে একটি StdClass
উদাহরণে (বা অবজেক্ট) রূপান্তর করে । আপনার যদি এটি লুপ করার প্রয়োজন হয় তবে এটিকে অ্যারেতে রূপান্তর করা সম্ভবত আপনি যা করবেন এবং হ্যাঁ এটি রূপান্তরের সময়কে বাড়িয়ে তুলছে
গড় সময়: 780.2 এমএস; মেমরি ব্যবহার: 41.5MB; ক্যাশে ফাইলের আকার: 3.8MB
Msgpack
@ হ্যাচ পিকপ্যাকের উল্লেখ করেছেন । সুন্দর ওয়েবসাইট। এর চেষ্টা করা যাক আমরা কি?
গড় সময়: 497 এমএস; মেমরি ব্যবহার: 32MB; ক্যাশে ফাইলের আকার: 2.8MB
এটি আরও ভাল, তবে একটি নতুন এক্সটেনশন প্রয়োজন; মাঝে মাঝে ভয় পাওয়া লোকদের সংকলন ...
IgBinary
@ জিঞ্জারডগ আইগিনারি সম্পর্কে উল্লেখ করেছে । দ্রষ্টব্য যে আমি সেট করেছি igbinary.compact_strings=Off
কারণ ফাইল আকারের চেয়ে আমি পারফরম্যান্স পড়ার বিষয়ে বেশি যত্নশীল।
গড় সময়: 411.4 এমএস; মেমরি ব্যবহার: 36.75MB; ক্যাশে ফাইলের আকার: 3.3MB
প্যাক প্যাকের চেয়ে ভাল। তবুও, এটির জন্য খুব সংকলন প্রয়োজন।
serialize
/unserialize
গড় সময়: 477.2 এমএস; মেমরি ব্যবহার: 36.25MB; ক্যাশে ফাইলের আকার: 5.9MB
জেএসএনের চেয়ে আরও ভাল পারফরম্যান্স, অ্যারে যত বড় হবে ধীরে ধীরে json_decode
, তবে আপনি এটি ইতিমধ্যে নতুন।
এই বাহ্যিক এক্সটেনশনগুলি ফাইলের আকার সঙ্কুচিত করছে এবং কাগজে দুর্দান্ত দেখায়। সংখ্যা মিথ্যা বলে না *। আপনি যদি কোনও স্ট্যান্ডার্ড পিএইচপি ফাংশন নিয়ে প্রায় একই ফলাফল পান তবে কোনও এক্সটেনশন সংকলন করার কী দরকার?
আমরা আপনার প্রয়োজনের উপর নির্ভর করে এটিও অনুমান করতে পারি, আপনি অন্য কারও চেয়ে আলাদা কিছু বেছে নেবেন:
- আইজিবাইনারি সত্যিই দুর্দান্ত এবং এমএসজিপ্যাকের চেয়ে আরও ভাল পারফর্ম করে
- আপনার ডেটাগুলি সংকুচিত করতে এমএসজিপ্যাক আরও ভাল (নোট করুন যে আমি আইগবাইনারি কমপ্যাক্ট.স্ট্রিং বিকল্পটি ব্যবহার করে নি)।
- সংকলন করতে চান না? মান ব্যবহার করুন।
এটাই, আপনাকে একটি বেছে নিতে সহায়তা করার জন্য আর একটি সিরিয়ালাইজেশন পদ্ধতির তুলনা!
* পিএইচপিউনিট ৩.7.৩১, পিএইচপি ৫.৫.১০ দিয়ে পরীক্ষিত - কেবলমাত্র একটি স্ট্যান্ডার্ড হার্ডরিভ এবং পুরানো দ্বৈত কোর সিপিইউ দিয়ে ডিকোডিং - 10 টি একই ব্যবহারের কেস টেস্টের গড় সংখ্যা, আপনার পরিসংখ্যান আলাদা হতে পারে
JSON_UNESCAPED_UNICODE
।