سوال: بهینه سازی برنامه
#1
Note 
سلام
من چند تا مقاله راجع به بهینه سازی نرم افزار خوندم و حقیقتا هیچی ازشون نفهمیدم که باید چیکار کرد که نرم افزار "کم" نیاره!
من یک نرم افزار ویندوزفون نوشتم، کاربرا جدیدا میگن برنامه خیلی کرش میشه و حقیقتا راست میگن:
[تصویر:  20150220-350-crash.png]
(نرم افزارهایی که داخل استور مایکروسافت قرار میگیرند، هربار که توی یک موبایل Crash یا همون Force close در اندروید،
که بشن این Crash ها به مایکروسافت ارسال میشه و مثلا هر دو سه روز یکبار، برنامه نویس میتونه تعداد کرش ها رو ببینه که چقدر به کرش های قبلی اضافه شده )
این برنامه دقیقا 33 روزه که ساخته شده اما این همه کرش!!!!!
توی گوشی خودم که رم 512 داره برنامه خوب کار میکنه و ندیدم که کرش کنه، اما توی بقیه گوشی ها حتی اونایی که رم 1 یا 2 گیگابایتی دارن، کاربرا میگن خیلی کرش میشه.

در حال حاضر منم دنبال یک راه حل قطعی برای این کرش ها میخوام.
برنامه هم کارش اینه که به سایت های موزیک وصل میشه و ازشون متن آهنگ ها، زمان ارسال پست، عکس و لینک دانلود رو میگیره.

با تشکر

See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
پاسخ
#2
سلام.برنامه هنگ میکنه یا کرش میشه؟ وقتی برنامه هنگ میکنه دیگه کاری نمیتونه انجام بده و این به اشغال رم و استفاده زیاد از cpu برمیکرده که باید کد رو بهینه تر بنویسی مثل ازاد کردن متغیرها و...
وقتی که برنامه خطا میده اما توسط برنامه نویس handle نشده اینجا برنامه بسته میشه و میگیم کرش شده که اینجا باید خطاها رو handle کنی.

I - YOU = FALSE
استاد ازم میپرسه چند تا وب سرور نام ببر میگم Apache,Lite speed,tomcat
استاد مینویسه: Apache,Light smith,tomcat
استاده داریم؟ :i'm_ok:
پاسخ
#3
ممنون بابت پاسخ
توی ویندوزفون برنامه ها زیاد هنگ نمیکنن حتی زمانی که بخوای به مثلا یک وبسایت با استفاده از HttpWebRequest وصل بشی. (توی دسکتاپ چند ثانیه هنگ میکنه اما توی ویندوزفون هنگ نمیکنه).


نه برنامه من کرش میکنه و میپره بیرون.
بعضی از خطا ها رو Handle کردم مثلا اکثرا همون خطای Invalid Cross-Thread توی دسکتاپ رو میدادن (اینجا شده Access denied).
جدا از کرش شدن، برنامه خیلی کُند شده از نظر خودم، که شاید دلیلش استفاده از عکس های با کیفیت باشه.
سوال آخر: توی متد ها و حلقه ها هم نیازه که متغیرها رو null کرد ؟ اینکار باعث بهتر شدنش میشه؟ مثلا این قسمتی از کد برنامه ـست.
کد:
        async void OnResult(object sender, Results result)
        {
            var dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                if (result.ShowType == ShowType.LoadingControls)
                {
                    var list = tm.List;
                    foreach (var item in list)
                    {
                        MyUserControl2 my = new MyUserControl2();
                        my.Name = item.Name;
                        my.URL = item.URL;
                        my.TITLE = item.Title;
                        my.ImageURL = item.ImageURL;
                        if (SettingsClass.ImageShow)
                            my.SetImageSource = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(item.ImageURL));

                        my.DOWNLOADED = item.Downloaded;
                        my.Width = LV.ActualWidth; 
                        LV.Items.Add(my);
                    }
                    Remove();
                }
                else if (!string.IsNullOrEmpty(result.Error) || result.Filter != Filter.No)
                    vars.ShowAdminMessage(string.Format("Site Filter: {1}\r\nError:\r\n{0}", result.Error, result.Filter.ToString()));

            });
        }
        void Remove()
        {
            if (LV.Items.Count > 150)
            {
                int i = 0;
                while (i <= 50 && i < LV.Items.Count)
                {
                    LV.Items.RemoveAt(i);
                    i++;
                }
            }
        }

این رویدادی هست که برای گرفتن مقادیر سایت ساختم، نیاز هست آخر حلقه متغیر my رو null کنم؟ یا اون list؟

ممنون

آخرین ویرایش: 20-02-2015 ساعت 16:46، توسط The Arrow
See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
پاسخ
#4
خواهش میکنم
هر کجا که احتمال بوجود اومدن خطا هست رو باید  handle کنی.


یکسری کارها هستن که باید رعایت کنی تا نتیجه بهتری بگیری مثلا از آبجکت هات میتونی فقط وقتی نیاز داری استفاده کنی و بعد استفاده از بین ببری مثال:

کد:
using (MyIDisposableObject obj = new MyIDisposableObject())
{
   // use the object here
} // the object is disposed of here


معمولا نیازی نیست و تاثیر خیلی کمی داره ضمنا خود Garbage collector اینکارو انجام میده ولی بازهم شخصا فکر کنم نال کنی بهتر باشه.
کلا به کدهات نگاه بنداز اگر برنامه خیلی سنگینه حتما جایی رو درست ننوشتی.

I - YOU = FALSE
استاد ازم میپرسه چند تا وب سرور نام ببر میگم Apache,Lite speed,tomcat
استاد مینویسه: Apache,Light smith,tomcat
استاده داریم؟ :i'm_ok:
پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note برنامه نویسی موازی با سی شارپ xMAN 0 451 05-08-2014 ساعت 12:01
آخرین ارسال: xMAN
Note شبیه سازی fzl 3 607 03-02-2014 ساعت 23:05
آخرین ارسال: xMAN
Note سوال ذخیره سازی عکس picturebox در سی شارپ The Arrow 2 727 01-09-2013 ساعت 15:00
آخرین ارسال: ScarFace
Note سوالاتی در مورد ذخیره سازی و بارگذاری اطلاعات در بانک اطلاعاتی SQL The Arrow 0 650 18-08-2013 ساعت 10:26
آخرین ارسال: The Arrow
Note سوال : ذخیره سازی اطلاعات یک data grid در XML سی شارپ The Arrow 1 629 05-07-2013 ساعت 23:16
آخرین ارسال: Ali Developer
Note سوال : ذخیره سازی اطلاعات یک data grid در سی شارپ The Arrow 3 1,298 24-04-2013 ساعت 17:30
آخرین ارسال: SOFTAFZAR
Note سوال : ذخیره سازی CheckBox و RadioButton در سی شارپ The Arrow 1 839 26-03-2013 ساعت 16:17
آخرین ارسال: Daniel
Note مرتب کردن آرایه با انواع روش های مرتب سازی SOFTAFZAR 0 455 05-11-2012 ساعت 14:01
آخرین ارسال: SOFTAFZAR
Note بازی مارپله به زبان سی شارپ SOFTAFZAR 0 765 21-07-2012 ساعت 13:31
آخرین ارسال: SOFTAFZAR

کاربرانِ درحال بازدید از این موضوع:   1 مهمان