Gopher Academy
3.85K subscribers
933 photos
42 videos
280 files
2.21K 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