Throughput बनाम latency के trade-offs
प्रति सेकंड कुल work (throughput) और प्रति item समय (latency) में संतुलन बनाएँ: per-item processing, batching और degree-of-parallelism tuning की तुलना करें।
Throughput बनाम latency के trade-offs, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
थ्रूपुट बनाम विलंबता
परिभाषाएँ:
- थ्रूपुट: प्रति सेकंड वस्तुओं की संख्या
- विलंबता: एक वस्तु पूरी करने में लगने वाला समय
- समझौता: समूह बनाना और अधिक समानांतरता थ्रूपुट बढ़ा सकती है, लेकिन अलग-अलग वस्तुओं में विलंब कर सकती है
प्रति-वस्तु शैली
हर वस्तु के आते ही उसे संसाधित करें: प्रत्येक वस्तु के लिए प्रतीक्षा न्यूनतम रहती है, लेकिन अतिरिक्त लागत हर वस्तु के लिए दोहराई जाती है।
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
// Simulate small per-item cost
static void HandleItem(int x)
{
// Fixed overhead per item
Thread.SpinWait(20000); // tiny CPU work
}
public static void Main(string[] args)
{
int n = 200;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < n; i++)
{
HandleItem(i); // process immediately (no batching)
// emit result right away (low latency style)
}
sw.Stop();
Console.WriteLine("Per-item style: {0} ms for {1} items", sw.ElapsedMilliseconds, n);
}
}
समूहीकरण शैली
समूहीकरण दोहराई जाने वाली अतिरिक्त लागत घटाता है और थ्रूपुट बढ़ाता है, लेकिन आरंभिक वस्तुओं को समूह पूरा होने तक प्रतीक्षा करनी पड़ती है, जिससे विलंबता बढ़ती है।
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
public class Program
{
static void ProcessBatch(List<int> batch)
{
// Amortize overhead across the whole batch
Thread.SpinWait(20000); // one-time overhead
for (int i = 0; i < batch.Count; i++)
{
// small per-record work
int val = batch[i] * 2;
if (val == int.MinValue) { } // keep compiler from dropping work
}
}
public static void Main(string[] args)
{
int n = 200;
int batchSize = 20;
List<int> current = new List<int>(batchSize);
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < n; i++)
{
current.Add(i);
if (current.Count == batchSize)
{
ProcessBatch(current);
current.Clear(); // emit results after the batch finishes
}
}
if (current.Count > 0) ProcessBatch(current);
sw.Stop();
Console.WriteLine("Batch style: {0} ms for {1} items (batch={2})", sw.ElapsedMilliseconds, n, batchSize);
}
}
समानांतरता का समायोजन
MaxDegreeOfParallelism का समायोजन CPU-आधारित work के लिए थ्रूपुट बढ़ा सकता है; बहुत अधिक मान संदर्भ-परिवर्तनों के कारण प्रदर्शन घटा सकता है।
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
static void Work(int x)
{
// CPU-bound unit
Thread.SpinWait(40000);
}
public static void Main(string[] args)
{
int[] data = new int[200];
for (int i = 0; i < data.Length; i++) data[i] = i;
foreach (int dop in new int[] { 1, 2, 4 })
{
var opt = new ParallelOptions();
opt.MaxDegreeOfParallelism = dop;
Stopwatch sw = Stopwatch.StartNew();
Parallel.ForEach(data, opt, Work);
sw.Stop();
Console.WriteLine("DOP={0} -> {1} ms", dop, sw.ElapsedMilliseconds);
}
}
}
छोटे समूहों का विचार
छोटे समूह दोनों लक्ष्यों में संतुलन बना सकते हैं: प्रति-वस्तु प्रसंस्करण से बेहतर थ्रूपुट और बहुत बड़े समूहों से कम विलंबता।
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
static void ProcessBatch(List<int> batch)
{
Thread.SpinWait(15000); // small shared overhead
for (int i = 0; i < batch.Count; i++) Thread.SpinWait(2000);
}
public static void Main(string[] args)
{
int n = 200;
int micro = 5; // micro-batch size
List<int> buf = new List<int>(micro);
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < n; i++)
{
buf.Add(i);
if (buf.Count == micro)
{
ProcessBatch(buf);
buf.Clear(); // emit more frequently than big batches
}
}
if (buf.Count > 0) ProcessBatch(buf);
sw.Stop();
Console.WriteLine("Micro-batch (size={0}): {1} ms", micro, sw.ElapsedMilliseconds);
}
}
समायोजन के सुझाव
समायोजन मार्गदर्शिका:
- मिलीसेकंड/वस्तु और वस्तुएँ/सेकंड दोनों मापें
- पहले छोटे समूह आज़माएँ
- समानांतरता धीरे-धीरे बढ़ाएँ; CPU और संदर्भ-परिवर्तनों पर नज़र रखें
- लंबी प्रतीक्षा और मेमोरी बढ़ने से बचने के लिए queue को सीमित रखें
थ्रूपुट और विलंबता का समझौता
पुनरावलोकन
पुनरावलोकन: प्रति-वस्तु प्रसंस्करण = कम विलंबता, कम थ्रूपुट। बड़े समूह या अधिक DOP = अधिक थ्रूपुट, अधिक विलंबता। छोटे समूह और DOP का सावधानीपूर्वक समायोजन दोनों के बीच संतुलन बनाने में सहायता करते हैं।
एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “Throughput बनाम latency के trade-offs” पाठ निःशुल्क है?
हाँ—“Throughput बनाम latency के trade-offs” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“Throughput बनाम latency के trade-offs” में मैं क्या सीखूँगा?
प्रति सेकंड कुल work (throughput) और प्रति item समय (latency) में संतुलन बनाएँ: per-item processing, batching और degree-of-parallelism tuning की तुलना करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।
“Throughput बनाम latency के trade-offs” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Parallel.ForEach, PLINQ
- Channels के साथ producer/consumer (सर्वेक्षण)
- Throughput बनाम latency के trade-offs