মডুলার প্রোগ্রামিং গণনার সময়কে প্রভাবিত করে?


19

প্রত্যেকেই বলেছে যে আমার কোডটি মডুলার করা উচিত, তবে আমি যদি কম, তবে বৃহত্তর, পদ্ধতিগুলির চেয়ে আরও বেশি মেথড কল ব্যবহার করি তবে তা কি কার্যকর নয়? এই বিষয়ে জাভা, সি, বা সি ++ এর মধ্যে পার্থক্য কী?

আমি পেয়েছি যে বিশেষত একটি গোষ্ঠীতে সম্পাদনা করা, পড়া এবং বোঝা আরও সহজ। তাহলে কোড পরিপাটি সুবিধার তুলনায় গণনা সময় হ্রাস তুচ্ছ?


2
প্রশ্নটি হ'ল প্রক্রিয়াজাতকরণের সময়টি আপনি কতটা কঠিন রক্ষণাবেক্ষণে ব্যয় করে সময়টি সাশ্রয় করেন তাতে কতক্ষণ সময় লাগবে। এর উত্তর পুরোপুরি আপনার আবেদনের উপর নির্ভর করে।
blrfl

2
অনেক ভাল প্রশ্ন বিশেষজ্ঞের অভিজ্ঞতার ভিত্তিতে কিছুটা মতামত উত্পন্ন করে, তবে এই প্রশ্নের উত্তরগুলি তথ্য, তথ্যসূত্র বা নির্দিষ্ট দক্ষতার চেয়ে প্রায় সম্পূর্ণরূপে মতামতের উপর ভিত্তি করে হয়ে থাকে।
gnat

10
এটি উল্লেখ করার মতোও যে কোনও ফাংশন বা পদ্ধতি কলের জন্য গণনা জরিমানা এতটাই ক্ষুদ্রতর যে এমনকি প্রচুর ফাংশন এবং পদ্ধতি কল সহ একটি খুব বড় প্রোগ্রামে, সেই কলগুলি এমনকি চার্টেও স্থান পায় না।
গ্রেফ্যাড

1
@ গ্রেফ্যাড: এটি সরাসরি জাম্পের জন্য সত্য তবে অতিরিক্ত পরোক্ষ পূর্বাভাসের ঝাঁপ দিতে পারে উদাহরণস্বরূপ program প্রোগ্রামের চলমান সময়ের ~% (আমি সম্প্রতি যাচাই করেছি প্রোগ্রাম থেকে একটি সংখ্যা - এটি যদিও প্রতিনিধি নাও হতে পারে)। আপনার ক্ষেত্রের উপর নির্ভর করে আপনি এটিকে তাৎপর্যপূর্ণ বিবেচনা করতে পারেন বা নাও বিবেচনা করতে পারেন তবে এটি চার্টে নিবন্ধভুক্ত করেছে (এবং এটি অবশ্যই কমপক্ষে আংশিক অর্ধবৃত্তীয়কে মডুলারালিটি করে)।
ম্যাকিয়েজ পাইচোটকা

4
অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মূল। লিনিয়ার কোড মডুলার কোডের তুলনায় কিছুটা দ্রুত। মডিউলার কোডটি স্প্যাগেটি কোডের চেয়ে অনেক দ্রুত। আপনি যদি পুরো জিনিসটির খুব (খুব) সম্পূর্ণ প্রকল্প ব্যতীত রৈখিক কোডকে লক্ষ্য করেন, আপনি স্প্যাগেটি কোডটি শেষ করবেন, আমি গ্যারান্টি দিচ্ছি।
এসএফ

উত্তর:


46

হ্যাঁ, এটি অপ্রাসঙ্গিক।

কম্পিউটারগুলি অক্লান্ত, নিকট-নিখুঁত এক্সিকিউশন ইঞ্জিনগুলি গতিতে সম্পূর্ণরূপে মস্তিষ্কের সাথে তুলনীয়নহীন গতিতে কাজ করে। যখন একটি পরিমাপযোগ্য পরিমাণ সময় থাকে যা কোনও ফাংশন কল একটি প্রোগ্রামের সঞ্চালনের সময়কে যুক্ত করে, পরবর্তী কোডটির সাথে জড়িত ব্যক্তির মস্তিষ্কের যখন অপঠনযোগ্য রুটিনটি বিচ্ছিন্ন করতে হয় তখন প্রয়োজনীয় সময়ের তুলনায় এটি কিছুই নয় they এমনকি এটির সাথে কীভাবে কাজ করা যায় তা বুঝতে শুরু করা। আপনি একটি তামাশা জন্য গণনা চেষ্টা করে দেখতে পারেন - অনুমান আপনার কোড শুধুমাত্র বজায় রাখা হয়েছে যে একবার , এবং এটি শুধুমাত্র সময় কেউ কোড সহ বোঝাপড়া জন্য প্রয়োজনীয় করার আধা ঘন্টার যোগ করা হয়েছে। আপনার প্রসেসরের ঘড়ির গতি নিন এবং গণনা করুন: সেটাকে অফসেট করার স্বপ্ন দেখতেও কতবার কোড চালাতে হবে ?

সংক্ষেপে, সিপিইউর প্রতি করুণা করা সম্পূর্ণরূপে সময়সীমার 99.99% পথভ্রষ্ট। বিরল বিরল ক্ষেত্রে, প্রোফাইলার ব্যবহার করুন। আপনি যে কেসগুলি স্পট করতে পারবেন তা ধরে নিবেন না - আপনি পারবেন না।


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

28
কেবলমাত্র "সিপিইউর প্রতি করুণা পোষণ করা" অভিব্যক্তিটির জন্য এটি +1, কারণ এটি অকাল অপটিমাইজেশনে ভুলভাবে মাথা উঁচু করে তোলে।
মাইকেল বর্গওয়ার্ট

4
উচ্চতর সম্পর্কিত: প্রতিদিনের দিক থেকে কম্পিউটারগুলি কত দ্রুত হয়? "গতি" এর জন্য কয়েকটি ফাংশন কল এড়ানোর জন্য আপনার পথ থেকে বেরিয়ে যাওয়া এমন কাউকে পুরো জীবনকাল ধরে মোট এক মিনিট বাঁচানোর জন্য আপনার পথ ছাড়ার মতো । সংক্ষেপে: এটি বিবেচনা করতে যে সময় লাগে তা এমনকি উপযুক্ত নয়।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

7
অনেক লোক যা হারিয়েছে তা স্পষ্টতই বিক্রি করার জন্য +1, তবে আপনি ভারসাম্যের মধ্যে সর্বাধিক গুরুত্বপূর্ণ ওজন যুক্ত করতে ভুলে গিয়েছেন যা সিপিইউকে আরও করুণা করে তোলে: সেই এক সময় রক্ষণাবেক্ষণে ব্যয় করা হারানো অর্থ এবং সময়কে উপেক্ষা করা; যদি এটি 1 সেকেন্ড সময় নেয় তবে এখনও সেখানে আরও অনেক कपटी ডুব রয়েছে। বাগ ঝুঁকি । আপনার কোড পরিবর্তন করা পরবর্তী রক্ষণাবেক্ষণকারীর পক্ষে যত বেশি বিভ্রান্তিকর এবং মুশকিল, তত বেশি ত্রুটি এতে বাগগুলি বাস্তবায়নের ফলে তার ঝুঁকি থেকে অনিবার্যভাবে বড় অনিবার্য ব্যয় হতে পারে এবং কোনও ত্রুটি ফলো-অন রক্ষণাবেক্ষণের কারণ হতে পারে (যার কারণ হতে পারে) বাগ ...)
জিমি হোফা

আমার এক প্রবীণ শিক্ষক বলতেন "আপনি যদি ভাবছেন যে আপনি সময়ের আগেই অপ্টিমাইজ করছেন কিনা তা এখনই থামুন this এটি যদি সঠিক পছন্দ হয় তবে আপনি এটি জানতেন" "
ভেন

22

এটা নির্ভর করে.

হিমবাহী-ধীর বিশ্বে যে ওয়েব প্রোগ্রামিং, যেখানে সমস্ত কিছু মানুষের গতিবেগে ঘটে, পদ্ধতি-ভারী প্রোগ্রামিং, যেখানে পদ্ধতি কলের সাথে পদ্ধতির কলটির তুলনা হয় বা পদ্ধতিটির দ্বারা প্রসেসিংয়ের ব্যয় ছাড়িয়ে যায়, সম্ভবত তাতে কিছু আসে যায় না doesn't ।

এম্বেড থাকা সিস্টেমের প্রোগ্রামিং এবং উচ্চ-হারের বিঘ্নগুলির জন্য বাধা হ্যান্ডলারের বিশ্বে এটি অবশ্যই গুরুত্বপূর্ণ। সেই পরিবেশে, "মেমোরি অ্যাক্সেস সস্তা সস্তা" এবং "প্রসেসর অসীম দ্রুত হয়" এর সাধারণ মডেলগুলি ভেঙে যায়। আমি দেখেছি যখন কোনও মেইনফ্রেম অবজেক্ট-ভিত্তিক প্রোগ্রামার তার প্রথম উচ্চ-হারের বাধা হ্যান্ডলার লেখেন writes এটা সুন্দর ছিল না।

বেশ কয়েক বছর আগে, আমি রিয়েল-টাইম এফএলআইআর চিত্রের উপর ননস্রুসভ 8-ওয়ে কানেক্টিভিটি ব্লব কালারিং করছিলাম, সেই সময়ে একটি শালীন প্রসেসরটি ছিল। প্রথম প্রচেষ্টাটিতে একটি সাব্রোটিন কল ব্যবহৃত হয়েছিল এবং সাব্রোটিন কল ওভারহেড প্রসেসরটিকে জীবিত খেয়েছিল। (4 সেকেন্ডে ফ্রেম x 30 ফ্রেম প্রতি পিয়ার পিক্সেল এক্স 64 কে পিক্সেল কল করে = আপনি এটি নির্ধারণ করেছেন)। দ্বিতীয় প্রয়াস সাব্রোটিনকে সি ম্যাক্রোতে পরিবর্তিত করেছিল, পাঠযোগ্যতার কোনও ক্ষতি ছাড়াই এবং সবকিছু ছিল গোলাপ।

আপনি কী করছেন এবং যে পরিবেশে আপনি এটি করছেন সেদিকে আপনার কঠোর নজর রাখতে হবে।


মনে রাখবেন যে বেশিরভাগ আধুনিক প্রোগ্রামিং সমস্যায় প্রচুর অবজেক্ট-ভিত্তিক, পদ্ধতি-খুশি কোড সহ সবচেয়ে ভাল সমাধান করা হয়। আপনি যখন এমবেডেড সিস্টেমের পরিবেশে থাকবেন তখন আপনি জানতে পারবেন।
কেভিন - মনিকা পুনরায় ইনস্টল করুন

4
+1, তবে একটি সতর্কতার সাথে: এটি সাধারণত এমন হয় যে কোনও অপ্টিমাইজ করা সংকলক প্রায়শই কোনও ব্যক্তির চেয়ে ইনলাইনিং, লুপ আনআরোলিং এবং স্কেলার এবং ভেক্টর অপটিমাইজেশন করার আরও ভাল কাজ করে। প্রোগ্রামারটির এখনও ভাষা, সংকলক এবং মেশিনটি খুব ভালভাবে এটির সুবিধা নিতে জানা প্রয়োজন, সুতরাং এটি যাদু নয়।
স্পষ্টভাবে

2
এটি সত্য তবে আপনার যুক্তিটি লেখার পরে আপনি আপনার কোডটি অপ্টিমাইজ করেছেন এবং আপনার অ্যালগরিদমের সমস্যাযুক্ত অংশটি খুঁজে পেতে এটি প্রোফাইল করেছিলেন d আপনি সম্পাদনার জন্য কোড শুরু করেন নি তবে পাঠযোগ্যতার জন্য। এবং ম্যাক্রোগুলি আপনাকে আপনার কোডটি পঠনযোগ্য রাখতে সহায়তা করবে।
উয়ে প্লোনাস

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

1
@ বিস্তারিত: হ্যাঁ এবং না no আধুনিক সংকলকরা ভাষাতে ইমপোজড সীমাবদ্ধতাগুলির সাথে সাধারণভাবে আরও ভাল কাজ করতে পারে job মানব প্রোগ্রামার জানে যে ভাষার দ্বারা আরোপিত সীমাগুলি নির্দিষ্ট ক্ষেত্রে হাতের ক্ষেত্রে প্রযোজ্য কিনা। উদাহরণস্বরূপ, প্রোগ্রামারকে কিছু খুব প্যাথলজিকাল জিনিস করার অনুমতি দিতে এবং যেভাবেই কাজ করে কোড তৈরি করতে ভাষার মান অনুসারে সিএন এবং সি ++ সংকলকগুলির প্রয়োজন। প্রোগ্রামার জেনে থাকতে পারে যে সে পাগল বা বোকা বা সাহসী নয় এমন জিনিসগুলি করতে পারে এবং এমন অপ্টিমাইজেশন করে যা অন্যথায় অনিরাপদ হতে পারে, কারণ তিনি জানেন যে তারা এই ক্ষেত্রে নিরাপদ।
জন আর স্ট্রোহম

11

প্রথমত: উচ্চতর ভাষার প্রোগ্রামগুলি মেশিন দ্বারা নয় মানুষ পড়ার জন্য।

সুতরাং প্রোগ্রামগুলি লিখুন যাতে আপনি সেগুলি বুঝতে পারেন। কর্মক্ষমতা সম্পর্কে চিন্তা করবেন না (যদি আপনার গুরুত্বের সাথে পারফরম্যান্স সমস্যা থাকে তবে আপনার অ্যাপ্লিকেশনটির প্রোফাইল দিন এবং যেখানে প্রয়োজন সেখানে কর্মক্ষমতা বাড়ান)।

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


5
আমি বলব যে আমাদের প্রোগ্রামগুলি এমনভাবে লেখা উচিত যাতে অন্যরা সেগুলি বুঝতে পারে।
বার্টলোমিয়েজ লেয়ান্ডোভস্কি

প্রোগ্রামটি পড়তে হবে এমন প্রথম ব্যক্তি হলেন নিজে বিকাশকারী himself এই কারণেই আমি আপনাকে লিখেছিলাম । যদি অন্য ব্যক্তিরাও প্রোগ্রামটি পড়তে পারেন তবে এটি দুর্দান্ত তবে (আমার দৃষ্টিতে) প্রয়োজনীয় নয় (প্রথম স্থানে)। আপনি যদি একটি দলে কাজ করেন তবে অন্যান্য ব্যক্তিদেরও প্রোগ্রামটি বুঝতে হবে তবে আমার উদ্দেশ্য ছিল সেই ব্যক্তিটি কম্পিউটার নয়, একটি প্রোগ্রাম পড়তে হবে।
উওয়ে প্লোনাস

5

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

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


2

কোনও গণনার ব্যয় সম্ভবত নেই। সাধারণত গত 10-20 বছর ধরে সংকলক / জেআইটিগুলি পুরোপুরি সূক্ষ্মভাবে ফাংশনটি অন্তর্ভুক্ত করে। সি / সি ++ এর জন্য সাধারণত এটি 'ইনলাইনেবল' ফাংশনগুলির মধ্যে সীমাবদ্ধ থাকে (যেমন ফাংশনটির সংজ্ঞা সংকলনের সময় সংকলনের জন্য উপলব্ধ - এটি একই ফাইলের শিরোনামে থাকে) তবে এলটিওর বর্তমান কৌশলগুলি এটিকে অতিক্রম করে।

আপনার যদি অনুকূলতার উপর সময় ব্যয় করা উচিত তবে আপনি যে ক্ষেত্রের উপর কাজ করছেন তার উপর নির্ভর করে। আপনি যদি 'সাধারণ' অ্যাপ্লিকেশনটির সাথে ডিল করেন যা বেশিরভাগ সময় ইনপুটটির জন্য অপেক্ষা করে থাকে - সম্ভবত অ্যাপ্লিকেশনটি 'ধীর' মনে না করে আপনি অপ্টিমাইজেশন সম্পর্কে চিন্তা করবেন না।

এমনকি এ জাতীয় ক্ষেত্রে মাইক্রো-অপ্টিমাইজেশান করার আগে আপনার অনেকগুলি বিষয়ে মনোনিবেশ করা উচিত:

  • সমস্যা গুলো কোথায়? সাধারণত উত্স কোডটি আমরা অন্যভাবে পড়তে থাকায় লোকেরা হটস্পটগুলি খুঁজে পেতে খুব কষ্ট করে। আমাদের অপারেশন সময়ের বিভিন্ন অনুপাত রয়েছে এবং আধুনিক প্রসেসরগুলি না করে আমরা ক্রমান্বয়ে সেগুলি সম্পাদন করি ।
  • প্রতিবার কিছু গণনা করা দরকার? উদাহরণস্বরূপ আপনি যদি হাজার হাজারের মধ্যে একটি একক প্যারামিটার পরিবর্তন করেন তবে আপনি পুরো মডেলের পরিবর্তে প্রভাবিত কেবলমাত্র একটি অংশ গণনা করতে চাইতে পারেন।
  • আপনি কি অনুকূল অ্যালগরিদম ব্যবহার করেন? থেকে পরিবর্তন O(n)করতে O(log n)অনেক বড় প্রভাব তারপর কিছু মাইক্রো-অপ্টিমাইজেশান দ্বারা অর্জন করতে পারে থাকতে পারে।
  • আপনি কি সঠিক কাঠামো ব্যবহার করেন? বলুন আপনি Listযখন প্রয়োজন তখন আপনি HashSetএমনটি ব্যবহার করছেন যাতে আপনার O(n)যখন থাকতে পারে ততক্ষণ আপনার লুকআপ রয়েছে O(1)
  • আপনি কি দক্ষতার সাথে সমান্তরালতা ব্যবহার করেন? বর্তমানে এমনকি মোবাইল ফোনেও 4 টি কোর বা তার বেশি থাকতে পারে এটি থ্রেডগুলি ব্যবহার করার জন্য লোভনীয় হতে পারে। তবে এগুলি একটি রূপালী বুলেট নয় কারণ তাদের সিঙ্ক্রোনাইজেশনের ব্যয় রয়েছে (সমস্যাটি যদি স্মৃতিশক্তি দ্বারা আবদ্ধ হয় তবে তারা কোনওভাবেই বোঝায় না)।

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

  1. আপনি যে প্ল্যাটফর্মটির উপর কাজ করছেন ঠিক তা জানুন
  2. আপনি ঠিকঠাক সংকলকটি কীভাবে কাজ করছেন এবং কী অপ্টিমাইজেশন এটি করতে সক্ষম এবং কীভাবে সেই অপটিমাইজেশন সক্ষম করতে আইডিয়োমেটিক কোড লিখবেন তা জেনে নিন
  3. মেমোরি অ্যাক্সেসের নিদর্শনগুলি এবং আপনি ক্যাশে কতটা ফিট করতে পারেন তা সম্পর্কে চিন্তা করুন (1 নম্বর থেকে আপনি যা জানেন তার সঠিক আকার)।
  4. তারপরে আপনি যদি গণনা সীমাবদ্ধ হন তবে গণনাটি সংরক্ষণের জন্য গণনা পুনর্গঠন সম্পর্কে ভাবেন

চূড়ান্ত মন্তব্য হিসাবে। সাধারণত পদ্ধতি কলগুলির ক্ষেত্রে আপনার একমাত্র সমস্যা হ'ল পরোক্ষ লাফ (ভার্চুয়াল পদ্ধতিগুলি) যা শাখার পূর্বাভাসক দ্বারা পূর্বাভাস দেওয়া হয়নি (দুর্ভাগ্যবশত পরোক্ষ লাফাই এটির পক্ষে শক্ত পরিস্থিতি)। যাহোক:

  • জাভাতে একটি জেআইটি রয়েছে যা অনেক ক্ষেত্রে ক্লাসের ধরণের পূর্বাভাস দিতে পারে এবং অতএব হটস্পটগুলিতে আপনার অনেক সমস্যা হওয়া উচিত নয়।
  • সি ++ সংকলকরা প্রায়শই একটি প্রোগ্রাম বিশ্লেষণ করেন এবং কমপক্ষে কিছু ক্ষেত্রে সঙ্কলনের সময় লক্ষ্যটি পূর্বাভাস দিতে পারেন।
  • উভয় ক্ষেত্রেই যখন লক্ষ্যটির পূর্বাভাস দেওয়া হয়েছে তখন ইনলাইনিংয়ের কাজ করা উচিত। সংকলক যদি অন্তর্নিহিত সম্ভাবনাগুলি সম্পাদন করতে না পারে তবে আমরাও পারব না।

0

আমার উত্তর সম্ভবত বিদ্যমান উত্তরগুলিতে খুব বেশি প্রসারিত হবে না, তবে আমার মনে হয় আমার দুটি সেন্ট সহায়ক হতে পারে।

প্রথম বন্ধ; হ্যাঁ, মডুলারিটির জন্য, আপনি সাধারণত সম্পাদনের সময়টির কিছু স্তর ছেড়ে দেন। অ্যাসেম্বলি কোডে সমস্ত কিছু লেখা আপনাকে সেরা গতি দিতে চলেছে। বলেছিল ...

আপনি ইউটিউব জানেন? সম্ভবত অস্তিত্বের সবচেয়ে উচ্চ-ব্যান্ডউইথ সাইট, না নেটফ্লিক্সের পরে দ্বিতীয়? তারা পাইথনে তাদের কোডের একটি বড় অংশ লেখেন, এটি একটি অত্যন্ত মডুলার ভাষা যা শীর্ষ-খাঁজ পারফরম্যান্সের জন্য একেবারেই তৈরি নয়।

বিষয়টি হ'ল, যখন কোনও কিছু ভুল হয়ে যাচ্ছে, এবং ব্যবহারকারীরা ধীরে ধীরে ভিডিওগুলি লোড করার বিষয়ে অভিযোগ করছেন, এমন কোনও দৃশ্য নেই যেখানে শেষ পর্যন্ত পাইথনের ধীর সঞ্চালনের গতিতে এই মন্দতা দায়ী করা হবে। তবে পাইথনের দ্রুত পুনরায় সংকলন, এবং টাইপ-চেকিং ছাড়াই নতুন জিনিস চেষ্টা করার তার মডুলার দক্ষতা সম্ভবত প্রকৌশলীগুলিকে খুব দ্রুত কী ঘটছে তা ডিবাগ করার অনুমতি দেবে ("বাহ। আমাদের নতুন ইন্টার্ন একটি লুপ লিখেছিল যা একটি নতুন এসকিউএল সাব-কোয়েরি করে প্রতিটি ফলাফলের জন্য। ") বা" ওহ, ফায়ারফক্স সেই পুরানো ক্যাচিং শিরোলেখ বিন্যাসটিকে অবমূল্যায়ন করেছে; এবং তারা সহজেই নতুনটিকে সেট আপ করার জন্য পাইথন লাইব্রেরি তৈরি করেছে ")

এই অর্থে, এমনকি মৃত্যুদন্ড কার্যকর করার সময় বিবেচনা করেও, একটি মডুলার ভাষাটিকে তত দ্রুত বিবেচনা করা যেতে পারে কারণ আপনার বাধা কী তা একবার খুঁজে পেয়েছেন, আপনার কোডটিকে সেরা উপায়ে কাজ করার জন্য এটি পুনরায় সংগঠিত করা সম্ভবত সহজতর হবে। এতগুলি প্রকৌশলী আপনাকে বলবেন যে ভারী পারফরম্যান্সের হিটগুলি যেখানে তারা ভেবেছিল তারা হবে না (এবং বাস্তবে তারা যে জিনিসগুলি অনুকূল করেছিল সেগুলি খুব প্রয়োজন ছিল; অথবা, তারা যেভাবে প্রত্যাশা করত তাও কার্যকর হয়নি!)


0

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

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

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

কোডগুলি অপ্টিমাইজ করার জন্য এটি মূল্যবান ক্ষেত্রে রয়েছে তবে সাধারণত এটি কোথায় তা নির্ধারণ করার জন্য আপনার কোডটি প্রোফাইল করা দরকার। আমি দেখতে পাই এটি প্রায়শই আমার প্রত্যাশিত কোড নয়।

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