সময় ব্যয় করে কাজ করা
কমান্ডটি কোনও সময় নষ্ট করার জন্য অপেক্ষা করে না বা অপেক্ষা করে না,
এটি আসলে কাজ করে যা সময় লাগে; একাধিক ছোট নেটওয়ার্ক বিলম্ব যোগ করে এটি সম্ভবত সময় নেয়। তবে এটি এমনও হতে পারে যে ইউটিউব দিকে বিলম্ব রয়েছে, যা যুক্ত হয়।
এটি প্রয়োজন যে এইচটিএমএল ডাউনলোড করতে ঠিক সময় লাগে;
কমান্ডটি কমপক্ষে দুটির পরে এইচটিটিপি অনুরোধ করা দরকার, একের পর এক এবং সম্ভবত আরও কিছু।
সুতরাং যদি কোনও কিছু ধীর হয় তবে এটি ইতিমধ্যে অনুরোধের সংখ্যা দ্বারা বহুগুণ।
আমার জন্য এটি খুব দ্রুত লাইনে 1.5 সেকেন্ড সময় নেয় - এটি 8 সেকেন্ড থেকে খুব বেশি দূরে নয়।
কীভাবে সন্ধান করবেন
আমি যে কমান্ডগুলি খুঁজে পেতে ব্যবহার করব তা প্রদর্শন করব:
উদাহরণগুলি আরও পরিপাটি করে তুলতে, আমরা ইউআরএলটির জন্য একটি পরিবর্তনশীল ব্যবহার করি:
$ u="https://www.youtube.com/watch?v=k4JGSAmu4lg"
আমরা আদেশের সময়কাল পরিমাপ করতে চাই; কমান্ডটি ব্যবহার করে কমান্ড time
এবং শেল বিল্টিনের মিশ্রণ না করার জন্য যত্ন নেওয়া দরকার। লাইনগুলি সংক্ষিপ্ত করতে আমরা একটি ছোট ফাংশন ব্যবহার করি:
$ t(){/usr/bin/time -f 'Time: %es' "$@";}
আপনার আদেশটি ভিডিও ফাইলের URL লিখেছেন (80 টি কলামে ছাঁটা হয়েছে):
$ youtube-dl -g "$u"
https://r20---sn-cxg7en7d.googlevideo.com/videoplayback?signature=091F68E823
আমার কম্পিউটারে চালানোর জন্য সময়টি মাপতে দিন:
$ t youtube-dl -g "$u"
https://r20---sn-cxg7en7d.googlevideo.com/videoplayback?signature=091F68E823
Time: 1.44s
ঠিক আছে, দেড় সেকেন্ড প্রশ্নের চেয়ে দ্রুত, তবে এত দ্রুত নয়। তবে কীভাবে সময় কাটাচ্ছে? হতে পারে এটি কোনও লুকানো উপায়ে ভিডিওটি ডাউনলোড করে তা বাতিল করে দেয়? ভিডিওটি 360 পি তে 11 মিনিটের is কোনও বিকল্প ছাড়াই এটি ডাউনলোড করতে প্রায় 13s - দশগুণ বেশি সময় লাগে।
ভার্জোজ অপশন সহ আরও নিবিড় নজর দেওয়া দরকার -v
:
$ t youtube-dl -v -g "$u"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', '-g', 'https://www.youtube.com/watch?v=k4J
[debug] Encodings: locale 'UTF-8', fs 'UTF-8', out 'UTF-8', pref: 'UTF-8'
[debug] youtube-dl version 2014.02.06
[debug] Python version 2.7.6 - Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14
[debug] Proxy map: {}
https://r20---sn-cxg7en7d.googlevideo.com/videoplayback?sparams=id%2Cinitcwn
Time: 1.40s
ওহ, '[ডিবাগ]' লাইনগুলি প্রিন্ট হওয়ার আগে কিছুটা বিলম্ব হয়েছে। দেখে মনে হচ্ছে youtube-dl
এটির নিজের কনফিগারেশন সেটআপের জন্য কিছুটা সময় ব্যয় করেছে। এটি এক সেকেন্ড বা তার এক চতুর্থাংশ, আমরা যে বিলম্বটি সন্ধান করছি তা নয়। তবে আমরা এটি থেকে কী শিখতে পারি তা হ'ল youtube-dl
বাস্তবায়নটি নিজেই ধীর হতে পারে।
বার্তাগুলির পরে, ফলাফল URL মুদ্রণ না হওয়া পর্যন্ত কিছুই ঘটে না until সুতরাং আমরা এখনও আকর্ষণীয় অংশটি দেখতে পাচ্ছি না।
বিকল্পটি -g
এই ভিডিওটি ডাউনলোড করার "অনুকরণ" করা এই অর্থে যে এটি সেই অর্ধ-গোপন URL খুঁজে বের করার জটিল অংশটি করে, এটি মুদ্রণ করে তবে তারপরে শেষ পর্যন্ত আসল ডাউনলোডটি এড়িয়ে যায়। অনুরূপ অপশন রয়েছে -s
যা ইউআরএল আউটপুট দেয় না এবং অন্যথায় অনুরূপ বলে মনে হয়। আসুন ধরে নেওয়া যাক যদি এটি একই সময় নেয় তবে এটি যথেষ্ট পরিমাণে সমান; আমাদের এটি যাচাই করা দরকার।
$ t youtube-dl -v -s "$u"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', '-s', 'https://www.youtube.com/watch?v=k4J
[debug] Encodings: locale 'UTF-8', fs 'UTF-8', out 'UTF-8', pref: 'UTF-8'
[debug] youtube-dl version 2014.02.06
[debug] Python version 2.7.6 - Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14
[debug] Proxy map: {}
[youtube] Setting language
[youtube] k4JGSAmu4lg: Downloading webpage
[youtube] k4JGSAmu4lg: Downloading video info webpage
[youtube] k4JGSAmu4lg: Extracting video information
Time: 1.45s
ঠিক আছে, -s
একই সময় নেয় -g
তাই পরীক্ষার জন্য তাদের প্রতিস্থাপন করা ঠিক আছে।
আরও আকর্ষণীয় হ'ল আমরা এখন আরও আউটপুট পেয়েছি। এবং এটি একটি আকর্ষণীয় সময় সহ মুদ্রিত হয়েছে: লাইনগুলি একে অপরের সাথে একইভাবে বিলম্বের সাথে মুদ্রিত হয়, সুতরাং দেখে মনে হয় তারা সেই ক্রিয়াগুলি সম্পর্কে যা বাস্তবে আমাদের সন্ধানের সময়টি নিচ্ছে।
বার্তাগুলি থেকে, কমপক্ষে দুটি ওয়েব পৃষ্ঠা ডাউনলোড করা হয় are তবে আমরা ধরে নিতে পারি যে "পৃষ্ঠা" শব্দের অর্থ একটি একক এইচটিটিপি অনুরোধ এবং একটি একক এইচটিএমএল নথি নয়।
আমরা কী শিখলাম?
মূল বক্তব্যটি হ'ল, প্রোগ্রামটির কাজটি আসলে সময় নেয়, এটি কোনও কিছুর জন্য অপেক্ষা করে না, বা ঝুলছে।
এছাড়াও, আমরা একই ধরণের সময় গ্রহণের একাধিক পদক্ষেপ দেখতে পাই। গণনা করার মতো অনেক কিছুই নেই, সুতরাং এটি কোনও উপায়ে নেটওয়ার্ক রাউন্ডট্রিপস যুক্ত হচ্ছে।
তার মানে, আমাদের সংযোগের বিলম্বটি কেবল এখানে গুরুত্বপূর্ণ। সংযোগের থ্রুপুটটি কেবল অপ্রাসঙ্গিক।
আপনি যদি আপনার ইন্টারনেট সংযোগটি দ্রুত তৈরি করেন তবে এটি ডাবল গতিতে ডেটা স্থানান্তর করতে পারে - এটি কোনও উপকারে আসবে না। তবে আপনি যদি আরও ভাল ping
সময় পেতে পারেন , এটি এটি আরও দ্রুত করে তুলবে।
যদিও এটি আপনার ইন্টারনেট পরিষেবা সরবরাহকারীর কাছে 'পিং' বারের মতো নয়; পিং সময় সর্বদা ইউটিউবে যা গুরুত্বপূর্ণ তা - এবং পরিবর্তন করা সম্ভব নাও হতে পারে।
মজার বিষয় হল, পরবর্তী পদক্ষেপের জন্য, একটি ভিডিও ডাউনলোড করার জন্য, দ্রুত রেখার প্রয়োজনীয়তাগুলি একেবারে বিপরীত: বিলম্বিতা মোটেই প্রাসঙ্গিক নয় এবং থ্রুপুটটি সত্যই গুরুত্বপূর্ণ।
এখনও ক্লান্ত হয়নি?
সময়টি আসলে কী ব্যয় করছে তা আরও জানতে আরও বিশদ চান?
পরবর্তী পদক্ষেপটি HTTP সংযোগটি সনাক্ত করা হবে; আমি সন্দেহ করব যে এটি দুটির চেয়ে অনেক বেশি রাউন্ডট্রিপগুলি উদাহরণস্বরূপ পুনঃনির্দেশের জন্য দেখায়। আপনি ব্যবহার করতে পারেন wireshark
, বা একটি লগিং এইচটিটিপি প্রক্সি, বা strace
সংযোগ বা লেখার জন্য সিস্টেম কল গণনা করতে পারেন।
আজকের জন্য, আমরা উভয়ই নেটওয়ার্কিংয়ের খরগোশের গর্তের দিকে গভীর গভীরভাবে দেখেছি।