ফ্রেড / ফ্রেইরাইটের জন্য অনুকূল বাফার আকার [বন্ধ]


10

পসিক্স ফ্রেড / ফ্রেইট ফাংশনগুলির মাধ্যমে ফাইলগুলি পড়ার / লেখার জন্য আমার কোন বাফারের আকার চয়ন করা উচিত?

c 

এই প্রশ্নটি খুব স্থানীয়ভাবে তৈরি। আপনি কেবল এই মুহুর্তে কোডিং করছেন যে কোনও নির্দিষ্ট প্রোগ্রামের সাথে এটি সম্পর্কিত।
ওয়ার্ল্ড ইঞ্জিনিয়ার

আমি সাধারণ মামলা বলতে চাই। অনেক প্রোগ্রামকে খুব অজানা আকারের (যেমন grep, cp) পুরো ফাইলগুলি পড়তে / লিখতে হয়

আপনি কি পসিক্স read/ writeফাংশন বা এএনএসআই / আইএসও / আইইসি fread/ fwriteফাংশন বলতে চান?
জানু হুডেক

উত্তর:


6

এএনএসআই / আইএসও fread/fwriteফাংশনগুলি বাফার হয়। বাফারটি সাধারণত 8 কিবি হয় এবং এটি আপনার কোডে যা ব্যবহার করেন তার থেকে আলাদা করে গ্রানুলারিটি দেয়। এটি সম্ভবত নীচের মানের সাথে বাফারটি কিছুটা বাড়িয়ে তোলে তা বোধগম্য হতে পারে। বাল্ক ট্রান্সফারের জন্য এগুলি অতিরিক্ত কপিগুলির কারণে সর্বদা সামান্য কিছুটা ধীরে থাকবে।

পসিক্স read/writeফাংশনগুলির জন্য এটি অপারেটিং সিস্টেম এবং ডিভাইস এবং অন্যান্য অনেক কিছুর উপর নির্ভর করে, তবে ব্যবহারিক অভিজ্ঞতা হ'ল আপনি দশ দশ কিবিবি ছাড়িয়ে বাফার বাড়িয়ে কোনও কার্যকারিতা উন্নতি করতে পারেন না, তাই 32 বা 64 কিবি ঠিক সঠিক is

কিছু সিস্টেমে নির্ভরতা অন্যের চেয়ে বেশি। লিনাক্সে পার্থক্যটি সাধারণত 8 কিবি-র উপরে নূন্যতম হয় (সুতরাং ডিফল্ট বাফারটি ভাল হয়) যেমন উইন্ডোজ সিইতে (নেটিভ এপিআই ব্যবহার করে; তাদের পসিক্স নেই) 64৪ কিবি এর চেয়েও বড় এখনও সহায়তা করে। এটি ডিভাইসের উপরও নির্ভর করে।


তাই 8K বাফার ইনপুট / আউটপুট (অর্থাত জন্য fread, fwrite) এবং 32 / 64K unbuffered জন্য? চিত্রের ডেটা প্রেরণে যদি বাফার বা আনফফার বেছে নেওয়ার কোনও নির্দিষ্ট যুক্তি থাকে?
ফ্রান্সেস্কো বোই

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