Gopher Academy
3.86K subscribers
935 photos
43 videos
280 files
2.26K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
How We Saved 70% CPU and 60% Memory in Refinery’s Go Code

🟢 خلاصه مقاله:
**تیم Refinery روی یک سرویس مهم مبتنی بر Go با مصرف بالای CPU و Memory کار می‌کرد و با پروفایلینگ دقیق (pprof، tracing و بنچمارک‌های انتهابه‌انتها) گلوگاه‌های واقعی را پیدا کرد. بیشترین صرفه‌جویی با حذف کارهای غیرضروری به‌دست آمد: حذف پردازش‌ها و serialization تکراری، دوری از reflection در مسیرهای داغ، جایگزینی JSON در hot path با دسترسی مستقیم/کدگذاری ساده، پیش‌اختصاص slices/maps و بازاستفاده از بافرها برای کاهش allocation و فشار GC. در هم‌روندی، به‌جای goroutineهای بدون‌مهار، از worker poolهای محدود و backpressure استفاده شد، کارها batch و داده‌ها تا حد امکان stream شدند تا قفل‌زنی و جابه‌جایی زمینه کاهش یابد. همچنین چند حلقه O(n^2) با ایندکس‌گذاری مبتنی بر map/set جایگزین شد، نتایج گران با cache کردن تکرار نشد و الگوهای I/O با خواندن/نوشتن تجمیعی بهینه شدند. در نهایت با تکیه بر allocationهای روی stack، استفاده از sync.Pool و روش‌های zero-copy، نیاز به GC پایین آمد. نتیجه: حدود 70% کاهش مصرف CPU و 60% کاهش Memory همراه با بهبود تاخیرهای p95/p99. درس کلیدی: بهینه‌سازی اغلب یعنی کمتر کار کردن—اندازه‌گیری کن، کار زائد را حذف کن و ساده‌سازی را تکرار کن.

#Go #Golang #Performance #Profiling #CPU #Memory #Optimization #pprof

🟣لینک مقاله:
https://golangweekly.com/link/176624/web


👑 @gopher_academy
👍21
🔵 عنوان مقاله
some odd discrepancies when profiling their Go code on macOS.

🟢 خلاصه مقاله:
این مطلب در Golang Weekly به این می‌پردازد که چرا هنگام پروفایل کردن برنامه‌های Go روی macOS گاهی نتایج ناسازگار و غافلگیرکننده دیده می‌شود؛ پروفایل‌ها بین اجراها تغییر می‌کنند و معمولاً با اعداد به‌دست‌آمده روی Linux یا در CI هم‌خوان نیستند. ریشه مسئله بیشتر به تفاوت ابزارها، رفتار سیستم‌عامل و ویژگی‌های بار کاری برمی‌گردد: نمونه‌برداری pprof ممکن است نقاط داغ کوتاه‌عمر را نبیند، مدیریت توان و زمان‌بندی macOS بر نرخ نمونه‌گیری و زمان اجرای رشته‌ها اثر می‌گذارد، و حضور cgo یا کتابخانه‌های بومی می‌تواند ردگیری پشته و نمادگذاری را دشوار کند. توصیه‌ها شامل ترکیب pprof با Instruments، اجرای طولانی‌تر برای پایداری نمونه‌گیری، کنترل نویز محیطی (مثل ثابت نگه‌داشتن GOMAXPROCS و اجرای سیستم در شرایط کم‌بار)، تکرار چندباره اندازه‌گیری و نهایتاً مقایسه با مقادیری است که روی Linux (در صورت استقرار نهایی) به‌دست می‌آیند. جمع‌بندی این است که پروفایل‌های macOS را راهنمایی جهت‌دار بدانید و تصمیم‌های نهایی کارایی را بر اساس پلتفرم مقصد اتخاذ کنید.

#Go #Golang #macOS #Profiling #Performance #pprof #Instruments #AppleSilicon

🟣لینک مقاله:
https://golangweekly.com/link/176897/web


👑 @gopher_academy
🔵 عنوان مقاله
Building Dolt on Windows: The 'Pacman' Game

🟢 خلاصه مقاله:
این مجموعه به سه موضوع کلیدی برای توسعه‌دهندگان می‌پردازد: ساخت Dolt روی Windows با تمثیل بازی «Pacman» برای شکار وابستگی‌ها و رفع ناسازگاری‌های سیستم‌عاملی؛ بررسی عملی Crush، عامل کدنویسی مبتنی بر TUI از Charm توسط Elian Deogracia-Brito که تجربه‌ی کار یکپارچه در ترمینال را ارزیابی می‌کند؛ و راهنمای Graham Helton برای پروفایلینگ برنامه‌های Go با pprof و k6 روی نمونه‌ای به نام Pears. پیام اصلی: ایجاد ساخت‌های پایدار روی Windows نیازمند مهار تفاوت‌های پلتفرمی است، ابزارهای TUI مانند Crush می‌توانند تمرکز و سرعت جریان کاری ترمینال‌محور را بالا ببرند، و ترکیب pprof با k6 باید به عادت روزمره‌ی تیم برای اندازه‌گیری، تحلیل و بهینه‌سازی عملکرد تبدیل شود.

#Dolt #Windows #Pacman #Crush #Charm #TUI #Go #pprof #k6 #Profiling

🟣لینک مقاله:
https://golangweekly.com/link/177187/web


👑 @gopher_academy
🔵 عنوان مقاله
Testing Out Crush, Charm's TUI-Based Coding Agent

🟢 خلاصه مقاله:
این مطلب با آزمودن Crush از Charm نشان می‌دهد یک دستیار کدنویسی مبتنی بر TUI چگونه می‌تواند کارهای روزمره توسعه را مستقیماً در ترمینال تسهیل کند؛ از پیمایش مخزن و تولید قطعه‌کد تا اجرای فرمان‌ها و نوشتن تست، با تمرکز بر جریان کاری سریع و کلیدمحور. در کنار مزایایی مانند کاهش جابه‌جایی بین ابزارها و هماهنگی با سبک یونیکسی، به محدودیت‌های رایجِ عامل‌ها نیز اشاره می‌شود: وابستگی به کیفیت مدل، نیاز به راهنمایی دقیق در پروژه‌های بزرگ/نامعمول و اینکه برخی وظایف هنوز از IDE سود می‌برند. همچنین به نوشته‌ای از Graham Helton درباره پروفایل‌کردن برنامه‌های Go با pprof و k6 ارجاع داده می‌شود که چرخه‌ای سنجش‌محور (تولید بار با k6، تحلیل گلوگاه‌ها با pprof، و تکرار) را توصیه می‌کند؛ چرخه‌ای که با ابزارهای ترمینالی و عاملی مثل Crush روان‌تر پیش می‌رود.

#Crush #Charm #TUI #CodingAgent #Go #pprof #k6 #DeveloperTools

🟣لینک مقاله:
https://golangweekly.com/link/177188/web


👑 @gopher_academy
2
🔵 عنوان مقاله
Profiling Go Programs with pprof and k6

🟢 خلاصه مقاله:
**این مقاله از Golang Weekly یک روند عملی برای بهینه‌سازی عملکرد سرویس‌های Go ارائه می‌کند: با k6 بار واقعی و سناریوهای قابل‌اسکریپت ایجاد می‌شود و هم‌زمان با pprof پروفایل‌های CPU، heap، goroutine، mutex و block گرفته می‌شود تا گلوگاه‌ها دقیق شناسایی شوند. مراحل پیشنهادی شامل فعال‌سازی امن pprof، اجرای سناریوی k6 تا رسیدن به بار هدف، برداشت پروفایل‌ها در حالت پایدار، تحلیل با go tool pprof (top، گراف، UI)، و سپس اعمال بهینه‌سازی‌ها مثل کاهش تخصیص‌ها، کاهش کپی و reflection، کاهش رقابت روی قفل‌ها و رفع نشتی goroutine است. با اجرای دوباره همان سناریو و مقایسه پروفایل‌ها، اثربخشی تغییرات سنجیده می‌شود. نتیجه: k6 علائم را نشان می‌دهد و pprof علت را؛ این ترکیب فرآیند بهبود عملکرد را تکرارپذیر و مبتنی بر داده می‌کند.

#Go #Golang #pprof #k6 #Performance #LoadTesting #Profiling #Observability

🟣لینک مقاله:
https://golangweekly.com/link/177189/web


👑 @gopher_academy
3