سلام
بحث cache در متد استاتیک این کلاس چطور است؟
بله متد static این کلاس کشی دارد ولی در نهایت مشخص است که این کش نمیتواند با نمونه سازی مستقیم کلاس برای یک الگوی خاص رقابت کند.
اصولاً وقتی کلاسی وجود دارد که برای یک الگوی مشخص و خاص تولید میشود، معلوم است که برای آن الگوی خاص بهینه شده.
درست است که new کردن Regex یک بار این شبه کامپایل یا هر بهینه سازی ممکنی را انجام میدهد ولی یکبار است و درعوض شما میتواند صدها بار از آن استفاده کنید.
ولی بهرحال چون سوال اولیه شما روی "بازدهی" بوده است، بازدهی چیزی نیست که بتوان با سخن رانی عددش را مشخص کرد!
پس عملاً امتحان کردم.
یکبار خیلی معمولی با حلقه for انجام دادم و هر بار 5 آزمایش مجزا با exe کامپایل release انجام شد.
نتیجه زمانی
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشخص است که بازدهی متدهای استاتیک این کلاس کمتر است.
ولی موضوع وقتی جالب تر شد که برنامه آزمایش را پیچیده تر کردم.
این بار 64 ریسمان همزمان 8 الگوی متفاوت را روی 10 مقدار اجرا کردند و نتایج چنین شد:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشخص است که زیر بار-فشار این تفاوت بیشتر بیرون میزند و بجز دیدن این نتایج هم باز پیشبینی میکردم و حالا بیشتر پیشبینی میکنم که در زیر فشار ریسمان های بیشتر این تفاوت باز مشخص تر شود.
درنتیجه اگر الگوی مشخص و ثابتی دارید و میخواهید بارها بررسی اش کنید در new کردن regex شک نکنید.
موفق باشید.