چرا Go سریع است؟ تحلیل سبک ولی فنی از Runtime، Scheduler و GCِGo فقط چون کامپایل‌شده است سریع نیست؛معماری اجرای هوشمندش باعث می‌شود روی هسته‌های زیاد، بار سنگین و I/O بالا مثل موشک عمل کند.
ِ1️⃣ Runtime کوچک اما کلیدیبرخلاف زبان‌هایی با VM سنگین کار میکنن، Go فقط یک runtime نازک دارد که خودش کارهای پایه را هندل می‌کند:زمان‌بندی goroutineهامدیریت حافظه و GCرشد/کوچک شدن stackتایمر و netpollerاین ترکیب یعنی حداقل overhead ولی حداکثر کنترل روی اجرای کد.
2️⃣ مدل زمان‌بندی M:P:Gشاه‌کلید سرعت Go همین است.M (Machine) → thread واقعی سیستم‌عاملP (Processor) → صف کار goroutine‌هاG (Goroutine) → واحد کار سبک و مستقلِScheduler از صف‌های P استفاده می‌کند و اگر یکی بیکار بود، کار از صف دیگر می‌دزدد (work-stealing).
ِ3️⃣ Goroutine: ارزان، پویا، بدون دردسرهر goroutine با ۲KB stack شروع می‌کند و اگر لازم شود، بزرگ‌تر می‌شود.این مدیریت پویا یعنی حافظه بسیار کارآمدتر مصرف می‌شود و ساخت goroutine هزینه‌ی ناچیزی دارد.در نتیجه می‌توان میلیون‌ها goroutine هم‌زمان داشت بدون satur شدن سیستم.
4️⃣ حافظه و مدل اتصالِGo به جای shared memory (با قفل و دردسر)، از message passing بین goroutineها استفاده می‌کند.یعنی حافظه کمتر بین threadها جابه‌جا می‌شود، cache CPU بهتر کار می‌کند و contention پایین می‌آید.در کل: «کم‌تر قفل، بیشتر سرعت».
ِ5️⃣ Garbage Collector همزمانGC از نوع tri-color incremental است؛ non-moving و concurrent.ِStop‑the‑worldش فقط چند میلی‌ثانیه طول می‌کشد.در عمل یعنی در اپ‌های real-time یا سرویس‌های سنگین هم latency قابل‌قبول می‌ماند.
ِ6️⃣ IO مدل چندپلتفرمیِRuntime از epoll، kqueue و IOCP استفاده می‌کند و آن را با scheduler ادغام می‌کند.وقتی goroutine منتظر IO است، thread بیکار نمی‌شود؛ runtime آن را پارک کرده و سراغ کار بعدی می‌رود.در نتیجه IO کاملاً غیر‌بلاکینگ و سبک است.
✅ نتیجه نهاییِGo سریع است چون:زمان‌بند هوشمند M:P:G داردِgoroutineها ultra‑light هستندِGC همزمان و کوتاه داردِmemory model تمیز و cache‑friendly استِIO با thread کم و latency پایین هندل می‌شودترکیبش یعنی کارایی سطح C با سادگی سطح Python.
11:13 - 25 April 2026

3 Reactions
62 Views