🔵 عنوان مقاله
CPU Cache-Friendly Data Structures in Go: 10x Speed with Same Algorithm
🟢 خلاصه مقاله:
** این مقاله نشان میدهد که در Go میتوان بدون تغییر الگوریتم و فقط با بهینهسازی نحوهٔ دسترسی به حافظه، به بهبودهایی تا ۱۰ برابر رسید. ایدهٔ اصلی این است که با بهرهگیری از محلیّت در CPU و نگه داشتن دادههای «داغ» در حافظهٔ پیوسته، تعداد cache miss به شدت کم میشود. راهکارهای کلیدی شامل استفاده از sliceهای پیوسته بهجای ساختارهای پر از pointer، فشردهسازی و چیدمان درست فیلدهای struct، انتخاب آگاهانه بین AoS و SoA، کاهش تخصیصها و استفاده از sync.Pool برای بازاستفادهٔ حافظه، و اجتناب از false sharing در برنامههای همزمان است. اندازهگیری با ابزارهای benchmark و pprof کمک میکند ببینیم گلوگاه واقعاً از کجاست. نتیجهٔ عملی طبق تجربهٔ Serge Skoredin: با حفظ همان منطق، تنها با طراحی cache‑friendly در Go میتوان جهشهای بزرگ کارایی بهدست آورد.
#Go #Golang #CPUCache #Performance #DataStructures #SystemsProgramming #Optimization #LowLatency
🟣لینک مقاله:
https://golangweekly.com/link/175636/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
CPU Cache-Friendly Data Structures in Go: 10x Speed with Same Algorithm
🟢 خلاصه مقاله:
** این مقاله نشان میدهد که در Go میتوان بدون تغییر الگوریتم و فقط با بهینهسازی نحوهٔ دسترسی به حافظه، به بهبودهایی تا ۱۰ برابر رسید. ایدهٔ اصلی این است که با بهرهگیری از محلیّت در CPU و نگه داشتن دادههای «داغ» در حافظهٔ پیوسته، تعداد cache miss به شدت کم میشود. راهکارهای کلیدی شامل استفاده از sliceهای پیوسته بهجای ساختارهای پر از pointer، فشردهسازی و چیدمان درست فیلدهای struct، انتخاب آگاهانه بین AoS و SoA، کاهش تخصیصها و استفاده از sync.Pool برای بازاستفادهٔ حافظه، و اجتناب از false sharing در برنامههای همزمان است. اندازهگیری با ابزارهای benchmark و pprof کمک میکند ببینیم گلوگاه واقعاً از کجاست. نتیجهٔ عملی طبق تجربهٔ Serge Skoredin: با حفظ همان منطق، تنها با طراحی cache‑friendly در Go میتوان جهشهای بزرگ کارایی بهدست آورد.
#Go #Golang #CPUCache #Performance #DataStructures #SystemsProgramming #Optimization #LowLatency
🟣لینک مقاله:
https://golangweekly.com/link/175636/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
skoredin.pro
CPU Cache-Friendly Data Structures in Go: 10x Speed
False sharing killed our performance. Data-oriented design saved it.
❤1🔥1
🔵 عنوان مقاله
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
docs.serviceradar.cloud
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go | ServiceRadar
How ServiceRadar turned a 19-hour TCP discovery job into a sub-second SYN scan by leaning on raw sockets, BPF, and Go assembly.