প্রথমবার যে পরিচিত বিরতিটি আমার দৃষ্টি আকর্ষণ করেছিল তা হল যখন আমি কয়েকশ মেগাবাইট লগ টেক্সট চালানোর জন্য সাজানোর কমান্ড ব্যবহার করছিলাম। এখন অবধি, আমি সর্বদা এটি উপেক্ষা করেছিলাম। আমি ব্যবহার করার সময় এই কি আসে du-sh প্রকল্প ডিরেক্টরি ক্রল করতে বা ls -la বিল্ড আর্টিফ্যাক্ট পূর্ণ ফোল্ডারে.
GNU coreutils লিনাক্সের মতোই মৌলিক, এবং তারা অস্পর্শিত বোধ করে। কিন্তু যত তাড়াতাড়ি আমি বুঝতে পারলাম যে নির্ভরযোগ্য মানে সর্বদা সর্বোত্তম নয়, বিশেষ করে আধুনিক হার্ডওয়্যারের ক্ষেত্রে, আমি জানতাম যে এটি ভিন্ন কিছু চেষ্টা করার সময়। সুতরাং, uutils, GNU coreutils এর মরিচা পুনঃপ্রবর্তন, ছিল আমার পরবর্তী স্টপ। আমি একটি কমান্ড অদলবদল করে শুরু করেছি, তারপরে অন্যটি, এবং প্রায়শই, utils দ্রুত ছিল। আপনি যদি টার্মিনালে অর্থপূর্ণ সময় ব্যয় করেন তবে এগুলি চেষ্টা করার মতো।
আপনি যে ঘর্ষণটি লক্ষ্য করা বন্ধ করেছেন তা সরল দৃষ্টিতে লুকিয়ে ছিল
আপনি তুলনা না করা পর্যন্ত “অনেক দ্রুত” শুধুমাত্র দ্রুত শোনাচ্ছে
আপনি যদি মনোযোগ না দেন কারণ কিছু স্বাভাবিক বলে মনে হয়, আপনি বিশ্বাস করতে শুরু করতে পারেন যে এটির স্বাভাবিক সীমানা রয়েছে। এই কারণেই আমি সর্বদা প্রিন্ট করার আগে একটি বড় ডিরেক্টরি তালিকায় ঘটে যাওয়া বিরতি উপেক্ষা করি। ডিবাগ করার সময় আপনি লগ বাছাই করলে আপনি যে বিলম্ব পাবেন তা আপনার প্রবাহকে ব্যাহত করতে পারে। আপনি সম্ভবত এটিকে I/O ডিস্কে চক আপ করবেন।
আধুনিক ডিভাইসগুলিতে, এই অনুমানগুলি কতটা পুরানো তা দেখা সহজ৷ এই মেশিনগুলিতে অত্যন্ত দ্রুত এনভিএমই ড্রাইভ রয়েছে এবং সিপিইউ কোরগুলি সাধারণত গড় ইউজারল্যান্ড টুল দ্বারা কম ব্যবহার করা হয়। যাইহোক, যেহেতু আমরা এখনও বিভিন্ন হার্ডওয়্যার যুগের অনেক সরঞ্জাম ব্যবহার করি, সেগুলি একক-থ্রেডেড এবং রক্ষণশীল হতে থাকে। যে প্রতিবন্ধকতাগুলো তাদের তৈরি করা হয়েছিল তার বেশির ভাগই এখন আর নেই।
কেউ বেঞ্চমার্ক বা কোরিউটিল প্রশ্ন করে না কারণ তারা সবসময় কাজ করে। আসলে, যখন আমরা আরও ভালো উৎপাদনশীলতা চাই, তখন আমরা আমাদের সংকেত সামঞ্জস্য করব এবং কার্নেল পরিবর্তন করব। কিন্তু আউটপুটগুলি পাশাপাশি তুলনা করা আমাকে দেখিয়েছে যে সমস্যাটি ডিভাইস ছিল।
কিভাবে uutils/coreutils লোডের অধীনে ভিন্নভাবে আচরণ করে
বহু বছরের প্রচেষ্টা এবং শত শত অবদানকারীদের সাথে, Utils প্রায় সম্পূর্ণ GNU সামঞ্জস্যের জন্য লক্ষ্য করছে। এটি মরিচা-এ সরঞ্জামগুলি পুনর্নির্মাণ করছে, এবং উবুন্টু 25.10-এর মতো নতুন বিতরণগুলি এখন এটির সাথে ডিফল্টরূপে পাঠানো হয়।
প্রথম আদেশ যে সত্যিই আমার দৃষ্টি আকর্ষণ ছিল সাজান. একটি 100 এমবি লগ ফাইলে, GNU সর্ট রিয়েল টাইমে 2.819 সেকেন্ড (ব্যবহারকারীর CPU সময়ের 10.204 সেকেন্ড) সময় নেয়, যখন রাস্ট বাস্তবায়ন একই কাজটি 0.092 সেকেন্ডের রিয়েল টাইমে সম্পন্ন করে। স্বাগতম অনেক বড় লগে কমান্ডটি দ্রুত অনুভূত হয়। বেশ কয়েকটি ছোট ফাইলের একটি বাল্ক কপি তৈরি করা লক্ষ্য করার গতিতে একটি উল্লেখযোগ্য পার্থক্য দেখিয়েছে। আমি চেষ্টা করেছি প্রতিটি কমান্ড যথেষ্ট দ্রুত ছিল না, কিন্তু আমি যথেষ্ট পেয়েছি যে আমি তাদের প্রতিস্থাপন রেখেছি।
প্রতিক্রিয়াশীলতা যা সামনে এসেছে। এই প্রথম আমি অনুভব করেছি যে অর্ডারগুলি সম্পন্ন হয়েছে, যদিও আমি সেগুলি আশা করি৷ আপনি যদি দ্রুত পুনরাবৃত্ত বা পাইপলাইনে সরঞ্জাম চেইনিং করেন তবে ডিবাগ করার সময় এটি একটি উল্লেখযোগ্য পার্থক্য হয়ে ওঠে।
কিছু টুল একই স্তরে সঞ্চালন করে, এবং কিছু প্রান্তের ক্ষেত্রে GNU এর পরিপক্ক অপ্টিমাইজেশনের জন্য আরও উপযুক্ত। কিন্তু পার্থক্য হল যে মরিচা বাস্তবায়ন প্রধানত আধুনিক মাল্টিকোর হার্ডওয়্যারের জন্য আরও উপযুক্ত বলে মনে হচ্ছে।
নিরাপত্তা এবং স্থিতিশীলতার পার্থক্য আপনি যখন এটির উপর জোর দেন তখন আপনি দেখতে পান
কেন আধুনিক পুনর্লিখন গতির চেয়ে বেশি পরিবর্তিত হয়?
যদিও আমি গতি পছন্দ করেছি, যা আমাকে সরঞ্জামগুলি ব্যবহার করতে অনুপ্রাণিত করেছিল তা হল ধারাবাহিকতা। রাস্টের মেমরি সুরক্ষা মডেলটি সি-ভিত্তিক সরঞ্জামগুলিতে সাধারণ বাগগুলির সম্পূর্ণ পরিসরকে প্রতিরোধ করে – বাফার ওভারফ্লো, ব্যবহার-পর-মুক্ত, অকার্যকর পয়েন্টার ডিরেফারেন্স – ম্যানুয়াল গার্ডের প্রয়োজন ছাড়াই। এমনকি যদি আপনি এগুলি সরাসরি দেখতে না পান, আপনি যদি একটি কমান্ড-লাইন টুলে প্রচুর পরিমাণে ইনপুট খাওয়ান তবে পূর্বাভাস একটি অপরিহার্য উপাদান।
আমি সাধারণভাবে পরিষ্কার আচরণের অভিজ্ঞতা পেয়েছি, যার মধ্যে বড় ডেটাসেটে স্পষ্ট ত্রুটি এবং অনুমানযোগ্য ব্যর্থতা, বিকৃত পাঠ্য বা অস্বাভাবিক ইনপুট প্যাটার্ন রয়েছে। উদাহরণস্বরূপ, বিকৃত UTF-8 পাঠ্যকে পাইপ করা হচ্ছে uu-কাট একটি সুস্পষ্ট ত্রুটি অবিলম্বে প্রদর্শিত হয়েছিল, যখন GNU কাট অপ্রত্যাশিত আউটপুট তৈরি করেছিল। এর মানে এই নয় যে GNU coreutils অস্থির, তবে শুরু থেকেই আধুনিক নিরাপত্তা গ্যারান্টি সহ একটি মৌলিক টুল তৈরি করা আরও বেশি আশ্বস্ত।
Utils একটি বিস্তৃত পরীক্ষার সংস্কৃতিও বজায় রাখে যা এর সমগ্র টুলসেট জুড়ে অবিচ্ছিন্ন একীকরণ অন্তর্ভুক্ত করে। আপনি স্ক্রিপ্ট এবং অটোমেশনের উপর খুব বেশি নির্ভর করলে এটি একটি মূল বিষয় যা আত্মবিশ্বাসে অনুবাদ করে।
সিস্টেমের মূল ইউটিলিটিগুলি পরিবর্তন করা বেপরোয়া বলে মনে হয় – এটি নয়
আপনার বেস সিস্টেমকে স্পর্শ না করে কীভাবে নিরাপদে ইউটিলিটিগুলি পরীক্ষা করবেন
GNU coreutils মনে হচ্ছে লিনাক্সের একটি উপাদান যার এখন আরও ভাল আধুনিক বিকল্প রয়েছে। আপনি এটি পরিবর্তন করা বিপজ্জনক মনে করতে পারেন, তবে এটি শুধুমাত্র কারণ আপনি বুঝতে পারেন না যে এটি কতটা বিপরীতমুখী। যখন uutils ইনস্টল করা হয়, তখন কিছুই ওভাররাইট করা হয় না কারণ এটি ডিফল্টরূপে ইনস্টল করা থাকে। uu- উপসর্গ। সুতরাং, উদাহরণস্বরূপ, আপনি আছে uu-বাছাই এবং uu-ls. আপনি পাশাপাশি উভয় সংস্করণ তুলনা করতে পারেন. এটি কমান্ডের জন্য A/B পরীক্ষার একটি ফর্ম।
এমনকি আপনি সাময়িকভাবে আপনার PATH সামঞ্জস্য করে এটিকে আরও এক ধাপ এগিয়ে নিতে পারেন। এইভাবে, মরিচা বাইনারিগুলিকে অগ্রাধিকার দেওয়ার আগে আপনাকে কোনও GNU ফাইল সরাতে হবে না। শুধু PATH প্রত্যাবর্তন করে, আপনি মূল সেটআপে ফিরে এসেছেন।
ইউটিলসের সাথে সামঞ্জস্যের একটি ছোট পার্থক্য রয়েছে, তবে এটি প্রধানত অস্পষ্ট পতাকার সংমিশ্রণ নিয়ে উদ্বেগ প্রকাশ করে। কখনও কখনও, এটি পুরানো POSIX আচরণের কারণেও হতে পারে যা আপনি সাধারণত ট্রিগার করবেন না। আপনি যদি একটি প্রাইভেট ওয়ার্কস্টেশন চালাচ্ছেন, আপনি সহজেই যেকোনো পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনতে পারেন এবং পরীক্ষায় ঝুঁকি কম থাকে।
আপনি কখনই প্রশ্ন করেননি এমন আদেশগুলি পুনর্বিবেচনার যোগ্য
আমি মনে করি না প্রত্যেকেরই অবিলম্বে GNU-এ স্যুইচ করা উচিত। যাইহোক, আরও গুরুত্বপূর্ণ, লিনাক্সের এই স্তরটি, যা আমরা কখনও প্রশ্ন করি না, হিমায়িত হয় না। আপনি প্রতিদিন ব্যবহার করেন এমন কোনো আদেশ পবিত্র নয়। বাস্তবতা হল সেগুলি অদলবদল করে, আপনি দিনে কয়েক মিনিট বাঁচাতে পারেন এবং আরও উত্পাদনশীল হতে পারেন।
দুঃখিত, লিনাক্স অনুরাগী: এই ওএস আসলে ভাল উইন্ডোজ প্রতিস্থাপন
লিনাক্স নয়, উইন্ডোজ নয়। ভালো কিছু