PDA

View Full Version : سرعت پايين نمايش فرم هاي داراي كنترل زياد



Programmer 1
چهارشنبه 07 مرداد 1388, 05:54 صبح
سلام ،

آيا سرعت اجراي نرم افزار قبل از ايجاد فايل اجرايي يعني در محيط ويژوال استوديو و بعد از ايجاد فايل اجرايي تفاوتي دارد ؟ من در حال طراحي نرم افزاري با زبان C# هستم و بعضي از فرم هاي من داراي كنترل هاي زيادي هستند و در هنگام اجرا از طريق كامپايلر VS 2008 وقتي گزينه اي از منو كه اين فرم را باز مي كند را كليك مي كنم فرم و كنترل هاي آن با تاخير آزار دهنده اي نمايش داده مي شوند ؟ آيا اين مشكل از زبان C# است ؟

متشكرم /.

shahab_ss
پنج شنبه 08 مرداد 1388, 19:42 عصر
خوب چرا تعداد کنترل ها رو کمتر نمیکنی ؟
مثلا با استفاده از TabControl میتونی دسته بندی کنی و تعداد کنترل هایی که در حال نمایش هستند رو کمتر کنی.

Programmer 1
جمعه 09 مرداد 1388, 05:31 صبح
اتفاقا من هم همين كار را كزده ام ، فرم من داراي يك TabControl بزرگ با 3 تب است كه در هر تب تقريبا 16 كنترل به كار برده ام ولي با اين همه هنوز هم سرعت پايين است شايد بايد برنامه كاملا تبديل به يك فايل اجرايي بشود تا سرعت واقعي نمايان شود ؟

Chris_Ronaldo
جمعه 09 مرداد 1388, 19:22 عصر
سلام

اگر ram سیستمتون پایین باشه به مشکل می خورید.
اگر از دیتابیس خاصی استفاده می کنید این رو چک کنید که برای بازیابی دیتا مشکلی وجود ندارد.

می بایست نسخه realese شده ایجاد کنید تا سرعت واقعی اجرا را بسنجید چون در حالت debug سرعت اجرا کندتر هست.

اگر این روش ها جواب نداد برو سراغ برنامه های سنجش performance.
خود مایکروسافت برنامه dot Net Trace داده که یکی از همکارای من از اون استفاده کرده.
یک برنامه دیگه هست با نام Ants که اگر درست خاطرم باشه شرکت red gate بیرون داده.
با این برنامه ها می تونی سرعت هر قطعه از کدتون را بسنجید و مشکل اصلی رو پیدا کنید.
منظورم همون تاخیری که باعث شده شما دل آزرده بشید هست.
:چشمک:

farnooshhp
شنبه 10 مرداد 1388, 08:41 صبح
شاید در رویداد formload تون کدی نوشتید سنگینه و اجرای اون خیلی طول می کشه

Programmer 1
یک شنبه 11 مرداد 1388, 05:36 صبح
من اصلا هنوز هيچ كدي براي فرم ننوشتم كه بخواهد سنگين باشد يا سبك فقط چند تا كنترل روي يك فرم قرار دادم به عبارتي فقط UI رو ساختم و هيچ كار ديگه اي نكردم حالا شايد يك خط كد هم نوشته باشم .
دوستان اصلا چه طوريه كه يك فيلم از نحوه اجرا شدن اين برنامه بگيرم و بفرستم شايد اصلا من خيلي حساسيت به خرج مي دم و سرعت اغلب برنامه هاي بزرگ شايد اين طوري باشه ؟

hozouri
یک شنبه 11 مرداد 1388, 07:24 صبح
دوست عزیز من مدت ها پیش همچین مشکلی رو داشتم یه راهه بهینه ای که به نظرم رسید اشیاء رو دسته ای به صورت کامپوننت در آوردم و چند تا property مربوط به کنترل های کامپوننت برای دست یابی به اطلاعات نوشتم. توی این روش سرعت لود کامپوننت بالاتر از اشیاء می باشد.

من توی فرمم 52 شیء لیبل , تکس باکس , کامبو و غیره دارم که در صورت عادی حدود 5 ثانیه طول می کشه فرم لود بشه اما وقتی به صورت کامپوننت در آوردم شد 2 ثانیه . البته رم 4 گیگ است.

farnooshhp
یک شنبه 11 مرداد 1388, 08:48 صبح
اشیاء رو دسته ای به صورت کامپوننت در آوردم و چند تا property مربوط به کنترل های کامپوننت برای دست یابی به اطلاعات نوشتم
میشه واضح تر توضیح بدید؟ چطوری به صورت کامپوننت در آوردید؟

sd.CSharpProgrammer
یک شنبه 11 مرداد 1388, 11:51 صبح
با سلام خدمت دوستان
ميتوني اون كنترل ها رو در يك فايل DLL در قالب usercontrol استفاده كني. فكر كنم اينطوري سرعتت بهبود پيدا ميكنه (البته مطمئن نيستم)
اگه توضيح بيشتر خواستي بگو بذارم

موفق باشي

seven7777777
یک شنبه 11 مرداد 1388, 14:33 عصر
دوست خوبم سلام

راستي كاربر در لحظه با تمام تب ها و كنترل هاي داخل آنها سرو كار داره ؟؟؟

اگه اينطور نيست لازم نيست تمام كنترل هات در شروع برنامه ايجاد بشن و در تب ها قرار بگيرن . اگه مي توني اونها رو در فرم هاي جداگانه بساز و هربار كه كاربر با بخشي از اون كنترل ها كار داره ، فرم مربوطه رو new كن و ازش يك آبجكت بساز .

اين راه رو به راه هايي كه دوستان گفتن اضافه كن . معمولا از تجميع راه ها به جواب خوبي ميشه رسيد .