تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: محاسبه سربار اضافه در متد های استاتیک و غیراستاتیک

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    13 محاسبه سربار اضافه در متد های استاتیک و غیراستاتیک

    سلام

    دوستان گفته شده است،که بهتر است که هنگامی که تعداد استفاده ما محدود است، از متد ایستا یک کلاس استفده کنیم،تا یک شی ایجاد کرده و سپس از تابع استفاده کنیم.
    همانند:
    Regex re = new Regex("e");
    string my = "Regular Expression";
    Console.WriteLine(re.Match(my));
    //--------------
    Console.WriteLine(Regex.Match(my,"e"));
    امکان داره عزیزان سربار ناشی از ایجاد شی و استفاده از متد استاتیک را شرح دهند؟ که چرا با اهمیت بود اینقدر که براش این طوری 2 راه گذاشتند؟
    این طور که بنده متوجه شدم،در متدهای استاتیک کلاس Regex وقتی یکبار الگو را بخواهیم تطتبیق دهیم، و کامپایل میشود.تا 15 بار نتایج قبل را در خود Cache میکند،که این مقدار قابل افزایش است.(یعنی یکبار کامپایل و سری های بعد از کش استفاده می شود)
    اما وقتی شی بسازیم هر بار دوباره کامپایل می کند.
    با این حساب پس همیشه بهتر است که استاتیک استفاده کنیم؟!
    Last edited by Life24; 30-11-2013 at 09:55.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    شی new شده بشدت برای اجرای بارها با همان الگو بهینه شده است.
    در واقع اگر بخواهید دوبار تطبیق یک الگو را بررسی کنید با قطع میتوان گفت، ساخت نمونه شی بازده بیشتری از متدهای استاتیک موجود دارد.
    متدهای استاتیک کلاس فوق صرفاً جهت سهولت استفاده و کاهش کدنویسی ایجاد شده اند و دلیل دیگری نداشته اند و در پشضمینه نمونه ای از کلاس regex را ساخته و فراخوانی میکنند.

    پس، اگر میتوانید شی regex یک الگو را تولید و در جایی نگاه دارید تا در دفعات بعد از همان شی استفاده کنید، حتماً انجامش دهید وگرنه از متدهای استاتیک کلاس فوق استفاده کنید.
    موفق باشید.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    ممنون،
    بحث cache در متد استاتیک این کلاس چطور است؟

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    بحث cache در متد استاتیک این کلاس چطور است؟
    بله متد static این کلاس کشی دارد ولی در نهایت مشخص است که این کش نمیتواند با نمونه سازی مستقیم کلاس برای یک الگوی خاص رقابت کند.
    اصولاً وقتی کلاسی وجود دارد که برای یک الگوی مشخص و خاص تولید میشود، معلوم است که برای آن الگوی خاص بهینه شده.

    درست است که new کردن Regex یک بار این شبه کامپایل یا هر بهینه سازی ممکنی را انجام میدهد ولی یکبار است و درعوض شما میتواند صدها بار از آن استفاده کنید.

    ولی بهرحال چون سوال اولیه شما روی "بازدهی" بوده است، بازدهی چیزی نیست که بتوان با سخن رانی عددش را مشخص کرد!
    پس عملاً امتحان کردم.

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

    درنتیجه اگر الگوی مشخص و ثابتی دارید و میخواهید بارها بررسی اش کنید در new کردن regex شک نکنید.
    موفق باشید.

  6. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •