কোড বেসের বিরুদ্ধে পন্থা অভিন্ন ধীর হয়ে উঠছে


11

আমরা একটি মাঝারি আকারের সি ++ কোড বেস (10Mloc) নিয়ে কাজ করছি যা আমাদের অপ্টিমাইজেশনের প্রচেষ্টা সমানভাবে ধীর হয়ে চলেছে ।

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

এমন কোনও সফল পদ্ধতি রয়েছে যা বিশ্বব্যাপী অনুকূলতম সম্পাদনামূলক সমাধানের জন্য কোনও কোড বেসের বিবর্তনকে কীভাবে সরিয়ে নিতে পারে যা সহজে অপ্টিমাইজেশনের সুযোগগুলি দ্বারা সহজেই বিভ্রান্ত হয় না তা স্থির করতে সহায়তা করে?

সম্পাদনা

আমরা বর্তমানে প্রোফাইল কীভাবে প্রশ্নের উত্তর দিতে:

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


10
10Mloc আসলে বিশাল প্রকল্প
BЈовић

1
এটি 10 ​​মিলিয়ন লোক (এসআই উপসর্গ) দ্বারা গণনা করা হয়েছে sloc। আমি এটিকে "মাঝারি আকারের" বলেছি কারণ এখানে "বড়" কী বলে বিবেচিত তা আমার কোনও ধারণা নেই।
বেনজামিন ব্যানিয়ার

5
খুব নিশ্চিত যে 10 মিলিয়ন সর্বত্র সর্বত্র বড় এবং সম্ভবত বেশিরভাগ জায়গায়।
রাইথাল

1
আশ্চর্যজনক, ধন্যবাদ @ হংক 10 এম এলওসি-এর জন্য মনে হচ্ছে আপনি খুব কম, প্রায় হার্ডওয়্যার স্তরে অপ্টিমাইজ করছেন? ট্র্যাডিশনাল ওওপি (এওএস "স্ট্রাকচারের অ্যারে") ক্যাশেগুলিতে মারাত্মকভাবে অক্ষম, আপনি কি আপনার ক্লাসগুলিকে এসওএ (অ্যারের কাঠামো) হতে পুনরায় সাজানোর চেষ্টা করেছেন যাতে আপনার কোডটি যে ডেটা পয়েন্টে কাজ করছে তা মেমরির সাথে সুসংগত? সেই অনেকগুলি মেশিনের সাহায্যে আপনি কি যোগাযোগের অবরুদ্ধতাগুলি বা সিংক্রোনাইজেশনে সময় কাটাচ্ছেন? চূড়ান্ত প্রশ্ন, আপনি কি স্ট্রিমিং ডেটা উচ্চ পরিমাণে নিয়ে কাজ করছেন বা এটি বেশিরভাগই আপনার ডেটা সেটগুলিতে জটিল অপারেশনের সমস্যা?
প্যাট্রিক হিউজেস

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

উত্তর:


9

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

গুচ্ছ পদ্ধতির একটি সংখ্যক সংক্ষিপ্ত, দ্রুত অপারেশনকে একক, ধীরগতিতে চালিত, অত্যন্ত বিশেষায়িত ক্রিয়াকলাপের সাথে প্রতিস্থাপনের একটি প্রচেষ্টা যা শেষ পর্যন্ত একই ফলাফল তৈরি করে।

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

অনুভূমিক অপ্টিমাইজেশন হ'ল একটি সম্পর্কিত কৌশল যা আপনি যখন আপনার "কার্যকর" পরিবেশের একটি নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করে আপনার সিস্টেমের একাধিক উপাদানগুলির মধ্যে বিতরণ করা "আস্তে" মুছে ফেলেন।

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


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

3

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

আপনি যখন এই পুনর্লিখনটি শুরু করবেন তখন আপনাকে বেশ কয়েকটি জিনিস আলাদাভাবে করতে হবে।

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

অতএব।

দ্বিতীয়ত। প্রতিটি ডেটা স্ট্রাকচার এবং অ্যালগরিদম পছন্দের প্রভাবগুলি বুঝুন।

তৃতীয়। ডেটা স্ট্রাকচার এবং অ্যালগরিদমকে আসল পছন্দটি "দেরী বাঁধাইয়ের" বিষয় হিসাবে তৈরি করুন। ইন্টারফেসের পিছনে বেশ কয়েকটি বাস্তবায়নের যে কোনও একটি থাকতে পারে এমন নকশার ইন্টারফেসগুলি।

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


1
আপনার উত্তরের জন্য ধন্যবাদ. যদিও আমাদের এখনও অপ্টিমাইজ করা দরকার (যা আমার জন্য ১ এবং ২ এর অধীনে আসে) আমি সত্যিই পিছনে সংগঠিত চিন্তাভাবনা পছন্দ করি 3.. ডেটা কাঠামো, অ্যালগরিদম এবং অ্যাক্সেসকে দেরী এবং স্পষ্টভাবে সংজ্ঞায়িত করে একজনকে অনেকের উপর একটি হ্যান্ডেল পেতে সক্ষম হওয়া উচিত সমস্যা আমরা সম্মুখীন হয়। এটি একটি সুসংগত ভাষায় রাখার জন্য ধন্যবাদ।
বেনিয়ামিন ব্যানিয়ার

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

1
সমস্ত খারাপ অ্যালগরিদম খাঁটি যুক্তি দ্বারা পাওয়া যাবে না। একবারে একবারে বসে বসে প্রোফাইল তৈরি করা দরকার। প্রাথমিক অনুমানটি সঠিক ছিল কিনা তা খুঁজে বের করার একমাত্র উপায় এটি। আসল ব্যয় (বিগো + কনস্ট) অনুমান করার একমাত্র উপায়।
বেনিয়ামিন বান্নিয়ার

প্রোফাইলিং খারাপ অ্যালগরিদম প্রকাশ করবে। সম্পূর্ণ সঠিক। এটি এখনও "অপ্টিমাইজেশন" নয়। এটি এখনও একটি মৌলিক ডিজাইনের সংশোধন আমার ডিজাইনের পরিবর্তনকে ত্রুটিযুক্ত করে। অপ্টিমাইজেশান (টুইট করা, ফাইন টিউন করা ইত্যাদি) প্রোফাইলিংয়ে খুব কমই দৃশ্যমান হবে।
এস.লোট

3

একটি দুর্দান্ত ব্যবহারিক কৌশল হল আপনার ইউনিট টেস্ট স্যুটটিকে পারফরম্যান্স টেস্ট স্যুট হিসাবে ব্যবহার করা

নিম্নলিখিত কোডটি আমার কোড বেসগুলিতে ভালভাবে কাজ করেছে:

  1. আপনার ইউনিট পরীক্ষার কভারেজটি ভাল কিনা তা নিশ্চিত করুন (আপনি ইতিমধ্যে এটি পেরেছেন, তাই না?)
  2. আপনার পরীক্ষা চলমান কাঠামো প্রতিটি পৃথক পরীক্ষায় রানটাইম রিপোর্ট করে তা নিশ্চিত করুন । এটি গুরুত্বপূর্ণ কারণ আপনি খুঁজে পেতে চান যেখানে ধীর পারফরম্যান্স হচ্ছে।
  3. যদি কোনও পরীক্ষা ধীরে ধীরে চলতে থাকে তবে এটিকে ডুব দেওয়ার উপায় হিসাবে এবং এই অঞ্চলে অপ্টিমাইজেশন লক্ষ্য হিসাবে ব্যবহার করুন । কোনও পারফরম্যান্স সমস্যা চিহ্নিত করার আগে অপ্টিমাইজ করা অকাল হতে পারে বলে মনে করা যায়, সুতরাং এই পদ্ধতির দুর্দান্ত বিষয়টি হ'ল আপনি প্রথমে দুর্বল পারফরম্যান্সের দৃ concrete় প্রমাণ পান। প্রয়োজনে পরীক্ষাটি ছোট ছোট পরীক্ষায় বিভক্ত করুন যা বিভিন্ন দিককে বেনমার্ক করে যাতে আপনি সনাক্ত করতে পারবেন মূল সমস্যাটি কোথায়।
  4. যদি কোনও পরীক্ষা খুব দ্রুত সঞ্চালিত হয় তবে এটি সাধারণত ভাল, যদিও আপনি পরে বিভিন্ন পরামিতিগুলির সাহায্যে একটি লুপে পরীক্ষা চালানো বিবেচনা করতে পারেন। এটি এটিকে আরও ভাল পারফরম্যান্স পরীক্ষায় পরিণত করে এবং প্যারামিটার স্পেসের আপনার পরীক্ষার কভারেজ বাড়িয়ে তোলে।
  5. কয়েকটি অতিরিক্ত পরীক্ষা লিখুন যা নির্দিষ্ট করে কর্মক্ষমতা লক্ষ্য করে, যেমন শেষ-থেকে-শেষ লেনদেনের সময় বা 1000 টি নিয়ম অ্যাপ্লিকেশন সম্পূর্ণ করার সময়। আপনার যদি নির্দিষ্ট অ-কার্যকরী পারফরম্যান্স প্রয়োজনীয়তা থাকে (উদাহরণস্বরূপ <300ms প্রতিক্রিয়া সময়), তবে পরীক্ষায় খুব বেশি সময় নিলে ব্যর্থ করে দিন।

আপনি যদি এই সমস্ত কিছু চালিয়ে যান, তবে সময়ের সাথে সাথে আপনার কোড বেসের গড় কার্যকারিতা জৈবিকভাবে উন্নত করা উচিত।

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


আমি কৌশলটি পছন্দ করি - চতুর - হাওয়ার, এটি মাইক্রো অপ্টিমাইজেশন এবং স্থানীয় নূন্যতমের দিকে উন্নতি করবে - এটি স্থাপত্য সমস্যাগুলি সমাধান করবে না যা আপনাকে বিশ্বব্যাপী ন্যূনতম হিট করতে দেয়
জেসনক

@ জেসনক - আপনি একেবারে ঠিক বলেছেন। যদিও আমি এটি যুক্ত করব যে এটি আপনাকে মাঝে মাঝে প্রমাণ হিসাবে প্রমাণ করতে পারে যে কোনও নির্দিষ্ট স্থাপত্য পরিবর্তনকে কেন ন্যায়সঙ্গত বলা হয় .....
মাইক্রা

1

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

আসলে, সেই ক্ষেত্রে, প্রকৃত সমস্যাটি প্রোফাইলিংয়ের মাধ্যমে পাওয়া যায় নি, তবে ভাগ্যবান অন্তর্দৃষ্টি দ্বারা।

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

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

এটি কোনও "হট স্পট" নয়।

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

(এই দৃষ্টিভঙ্গির প্রায়শই একটি সমালোচনা করা হয় যে, পরিসংখ্যানগত বৈধতার জন্য নমুনাগুলির সংখ্যা খুব কম That পিডিএফের 13 স্লাইডে এর উত্তর দেওয়া হয়েছে rief সংক্ষেপে - হ্যাঁ, সম্ভাব্য সঞ্চয়ের "পরিমাপ" সম্পর্কে উচ্চ অনিশ্চয়তা রয়েছে, তবে 1) সম্ভাব্য সঞ্চয়ীগুলির প্রত্যাশিত মানটি মূলত অপ্রত্যাশিত এবং 2) যখন সম্ভাব্য সঞ্চয় $ x speed স্পিডআপ অনুপাতকে $ 1 / (1-x) translated দ্বারা অনুবাদ করা হয়, তখন এটি উচ্চ (উপকারী) কারণগুলির দিকে দৃ strongly়ভাবে স্কিউড হয়)


আপনার উত্তরের জন্য ধন্যবাদ. আমরা পরিসংখ্যানগত নমুনায় বিশ্বাস করি না এবং ভালগ্র্যান্ডের সাথে উপকরণ ব্যবহার করি। এটি আমাদের বেশিরভাগ সামগ্রীর "স্ব" এবং "সমেত" উভয়ই দামের ভাল অনুমান দেয়।
বেনিয়ামিন বান্নিয়ার

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