অনুরূপ ফাইলগুলি দক্ষতার সাথে সংকুচিত করুন


11

আমার প্রায়শই একে অপরের সাথে সাদৃশ্যপূর্ণ ফাইলগুলি সংক্ষেপণের প্রয়োজন হয়।

বর্তমানে আমি 7 জিপ ব্যবহার করি, যা আল্ট্রা সেটিংস সহ 8 টি কোর ব্যবহার করে প্রায় 35 মিনিটের মধ্যে ১ 16 গিগাবাইট ফাইলকে কমপক্ষে ১.২ জিবি করে দেয়।

আমার কাছে মনে হয় যে সেই সময়ের বেশিরভাগ সময় সংকোচনের জন্য অভিধানের কম্পিউটিংয়ে ব্যয় করা হয়। যেহেতু ফাইলগুলি অত্যন্ত সাদৃশ্যযুক্ত, প্রকৃতপক্ষে ব্যবহৃত অভিধান সম্ভবত একই রকম।

উইন্ডোজ-ভিত্তিক সংক্ষেপণ সরঞ্জাম (এমন একটি বিকল্প সহ 7 জীপ যা আমি অবগত নই, বা একটি ভিন্ন সরঞ্জাম) যা অভিধান সংরক্ষণ করতে পারে এবং পরবর্তী ফাইলগুলির জন্য সেই সংরক্ষিত অভিধানটিকে পুনরায় ব্যবহার করতে পারে?

উল্লেখযোগ্যভাবে দ্রুত সংকোচনের সময়, আমার মতো একইভাবে একটি সংকোচন অনুপাত বজায় রাখার সমস্যাটির আরও কী আরও ভাল উপায় থাকতে পারে?

উত্তর:


5

Lempel-Ziv-ওয়েলশ (LZW) কম্প্রেশন অ্যালগরিদম মজ্জাগতভাবে, নিবিড়, কাজ নিজেই হচ্ছে আসলে অভিধান কম্পিউটিং সংখ্যাগরিষ্ঠ সাথে। এটি আক্ষরিকভাবে ঠিক কীভাবে এলজেডব্লু কাজ করে।

অ্যালগোরিদম নিজেই পরবর্তী প্রতিটি "প্রতীক" এটি স্ক্যান করার জন্য একটি নতুন অভিধান এন্ট্রি যুক্ত করে এবং এইভাবে প্রতিটি একক পুনরাবৃত্তির সময়কালে অভিধানে একটি নতুন এন্ট্রি যুক্ত করা হয়। বস্তুতপক্ষে, অভিধান হয়ে , ফাইল কম্প্রেস কপি এবং এইভাবে আসলে শুধুমাত্র জিনিস LZW কম্প্রেশন কোন উল্লেখযোগ্য সময় প্রথম স্থানে কম্পিউটিং ব্যয়।


আপনি যদি হাফম্যান এনকোডিংয়ের মতো কিছু ব্যবহার করেন তবে অভিধানের পুনরায় ব্যবহার সত্যিই সম্ভব হবে (সম্ভবত উপ-অনুকূল সংকোচনের হার / আকারের ব্যয়ে)। তবে, বেশিরভাগ আধুনিক সংক্ষেপণ অ্যালগরিদম এবং সরঞ্জামগুলি দক্ষতা এবং গতির জন্য এলজেডব্লিউ অ্যালগরিদম ব্যবহার করে (হাফম্যান সংকোচনের জন্য ডেটার উপর দিয়ে দুটি পাসের প্রয়োজন হবে [একটি হাফম্যান ট্রি / টেবিল উত্পন্ন করতে, অন্যটি আসলে ডেটা সংকোচন করার জন্য অন্য], যেখানে এলজেডব্লু সম্পূর্ণ করা যেতে পারে একক পাস)।


1
হাফম্যান এবং একটি পূর্বনির্ধারিত অভিধানের সাথে কি কেবল একটি পাসের প্রয়োজন হবে? হফম্যান ভিত্তিক কোনও অফ-শেল্ফ রয়েছে যা সংরক্ষণকৃত অভিধানগুলিকে সমর্থন করে?
এরিক জে।

@EricJ। হ্যাঁ, একটি পূর্বনির্ধারিত অভিধান সহ এটি সিঙ্গল-পাস এনকোডিং হবে। আমি এমন কোনও সফ্টওয়্যার জানি না যা এটি করতে পারে তবে আমি ব্যক্তিগতভাবে এমন প্রোগ্রাম লিখেছি যেগুলি এটি করে। আমি চেষ্টা না করেও, এই সরঞ্জামটি দেখে মনে হচ্ছে এটি এটি করতে পারে। তবে, কেবল লক্ষ্য করুন যে (আবার, এলজেডাব্লু এর বিপরীতে) হাফম্যান-এনকোডেড বিটস্ট্রিমটি ডিকোড করতে আপনার এখনও ডেটা সংক্ষেপিত করতে মূল অভিধান প্রয়োজন।
ব্রেকথ্রু

সেই সরঞ্জামটির বয়সের ভিত্তিতে, আমি অনুমান করছি যে এটি একক থ্রেডযুক্ত। আমি অনুমান করব 8 এর পরিবর্তে 1 কোর ব্যবহার করা কোনও নির্দিষ্ট অভিধানে কোনও উপকার পাবেন :-( অন্য প্রান্তে অভিধানটি পাওয়া আমার দৃশ্যপটে সম্ভাব্য (ডেটা সেন্টারগুলির মধ্যে বৃহত ফাইল স্থানান্তর করে)
এরিক জে

2

ডিফল্ট অ্যালগরিদমের বিপরীতে, 7-জিপের এলজেডএমএ ডিফল্টরূপে দৃ comp় সংকোচনের ব্যবহার করে, যা আন্তঃ-ফাইলের অপ্রয়োজনীয়তার সুবিধা নেয়। ফাইলগুলি যথেষ্ট ছোট হওয়া পর্যন্ত এটি ডিফল্ট সেটিংসের সাথে কাজ করবে।

সলিড ব্লক আকারের জন্য 2 গিগাবাইটের ডিফল্ট সেটিংস সহ , একটি 16 জিবি ফাইল আসলে 8 টি পৃথক অংশ হিসাবে সংকুচিত হয়।

@ ব্র্যাকথোরুগ যেমন ইতিমধ্যে বলেছে, অভিধানটি উড়ে যাওয়ার সময় তৈরি হয়। আপনি সেট করে প্রায়োগিক এই যাচাই করতে পারেন সলিড ব্লক আকার থেকে সলিড (একবারে সব ফাইল কম্প্রেস) এবং নন-কঠিন (আলাদাভাবে প্রতিটি ফাইল কম্প্রেস)।

বৃদ্ধি সলিড ব্লক আকার আসলে একটি ধীর-ডাউন স্থাপিত হবে, কিন্তু এটি একটি অনেক ভালো কম্প্রেশন অনুপাত হতে পারে। উদাহরণস্বরূপ, দুটি অভিন্ন ফাইল সংকুচিত করার ফলে নন-সলিড সংকোচনের সাথে প্রায় দ্বিগুণ বড় একটি সংরক্ষণাগার তৈরি হবে।


1
আমার ক্ষেত্রে, আমি একই সময়ে একই সময়ে একই ফাইলগুলি বিভিন্ন সময়ে সংকোচিত করি। প্রদত্ত সংরক্ষণাগারে কেবল প্রতি এক 16 জিবি-ইশ ফাইল রয়েছে।
এরিক জে।

আহ, ঠিক আছে. আমি ভুল ব্যাখ্যা করেছিলাম। পুরানো সংরক্ষণাগারগুলি মুছে ফেলা হবে যখন নতুনটি তৈরি হবে? যদি না হয় তবে একক সংরক্ষণাগারে বেশ কয়েকটি ফাইল সংরক্ষণ করা কি গ্রহণযোগ্য হবে? এটি সংকোচনের গতিতে সহায়তা করবে না, তবে ফাইলগুলি আসলে কতটা অনুরূপ তার উপর নির্ভর করে এটি অনুপাতের সাথে সহায়তা করতে পারে।
ডেনিস

1
কিছু নয়, তা হয় না। একটি শক্ত সংরক্ষণাগার আপডেট করাতে আরও অনেক বেশি সময় লাগে, তবে এর ফলে আরও ভাল সংকোচনের ফলাফল হয় না।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.