یه نکته در مورد بهبود سرعت آماده سازی و کاهش استفاده از حافظه | VahidGeek
یه نکته در مورد بهبود سرعت آماده سازی و کاهش استفاده از حافظه بگم، تفکرش خیلی جاها ممکنه به درد بخوره.
اینجا ما بیش از ۴۰۰۰ رنج آیپی ۲۴/ داریم، یعنی بیش از ۱ میلیون آیپی: 4K * 256 = 1M
تو نسخهی قبل میومدم این رنج آیپیها رو تبدیل به یک آرایه از IP ها میکردم، خب حجم زیادی از مموری و cpu مصرف میشد تا اینها رو پروسس کنه و بعد این array رو با الگوریتم درهمریختگی هم میزدم و شروع میکردم به اسکن. این فرآیند روی سیستم خودم ۱۰ ثانیه زمان میبرد. طبیعتا امکان تست تمام یک میلیون آیپی هیچوقت میسر نمیشد.
تو نسخهی جدید اومدم جای اینکه تمام ۲۵۶ آیپی یک رنج رو بردارم، به صورت رندوم ۳۰ تا آیپی از هر رنج انتخاب کردم. روش تولید آیپی رو هم عوض کردم. خروجی شد یک آرایه با 120K آیپی رندوم که به طور مساوی از رنجهای مختلف استخراج شده. اینجا باز لیست رو shuffle کردم تا آیپیها به ترتیب اتفاقی تست بشن. زمان این آمادهسازی به حدود ۵۰۰ میلیثانیه کاهش پیدا کرد، مصرف حافظه هم شد ۱۰٪ و دیگه برای کاربر آزاردهنده یا قابل لمس نیست.
نکتهی مهم اینه که همچنان با همون احتمال قبلی، شانس تستکردن رنجآیپیهای متفاوت وجود داره و خروجی نهایی نقص یا افتی در عملکردش نداره.