تور لحظه آخری
امروز : چهارشنبه ، 28 شهریور 1403    احادیث و روایات:  امام صادق (ع):آن‏كه خدا را شناخت ، از او ترسيد و آن كس كه از خدا ترسيد ، ترس از خدا او را به عم...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

تریدینگ ویو

کاشت ابرو

لمینت دندان

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

طراحی کاتالوگ فوری

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

وکیل کرج

خرید تیشرت مردانه

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید ابزار دقیق

خرید ریبون

موسسه خیریه

خرید سی پی کالاف

واردات از چین

دستگاه تصفیه آب صنعتی

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

خرید نهال سیب سبز

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

دیوار سبز

irspeedy

درج اگهی ویژه

ماشین سازان

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

شات آف ولو

تله بخار

شیر برقی گاز

شیر برقی گاز

خرید کتاب رمان انگلیسی

زانوبند زاپیامکس

بهترین کف کاذب چوبی

پاد یکبار مصرف

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

بلیط هواپیما

 






آمار وبسایت

 تعداد کل بازدیدها : 1816509643




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

افزایش سرعت برنامه ها


واضح آرشیو وب فارسی:سایت ریسک: View Full Version : افزایش سرعت برنامه ها mahdi7s16-07-2009, 12:55 AMسلام می خواستم بدونم در کدنویسی و کلا برنامه نویسی چه قلق هایی وجود داره که می تونیم ازشون استفاده کنیم تا سرعت برنامه بالاتر بره:11: god of war 216-07-2009, 01:00 AMدوست عزیز این سوالی که شما پرسیدی من خودم که هنوز پیش استادهای اینجا خیلی کوچیکم می تونم در حد سه یا چهار صفحه مطلب بنویسم چه برسه به بقیه... sari-136916-07-2009, 01:15 AMدوست عزیز این سوالی که شما پرسیدی من خودم که هنوز پیش استادهای اینجا خیلی کوچیکم می تونم در حد سه یا چهار صفحه مطلب بنویسم چه برسه به بقیه... خوب شما بفرمایید ما هم استفاده کنیم . mahdi7s16-07-2009, 10:32 AMدوست عزیز این سوالی که شما پرسیدی من خودم که هنوز پیش استادهای اینجا خیلی کوچیکم می تونم در حد سه یا چهار صفحه مطلب بنویسم چه برسه به بقیه... ممنون میشم اگه کمک کنید تا دوستان دیگه هم استفاده کنن:11: hamishebahar16-07-2009, 12:18 PMمی خواستم بدونم در کدنویسی و کلا برنامه نویسی چه قلق هایی وجود داره که می تونیم ازشون استفاده کنیم تا سرعت برنامه بالاتر برهhttp://www.forum.p30world.com/images/New-smile/N_aggressive%20%2817%29.gif سلام خسته نباشید. برای اینکه بتونی برنامه رو درست و سریع بنویسی فقط نیاز به تمرین های مکرر داری. مگه موتور سیکلته که قلق داشته باشه.دی: شما برای اینکه بتونی از کلاس های VS استفاده کنی تا کارت سریع تر راه بیفته و یه کلاس تکراری خودت تعریف نکنی.باید دنبال کتاب های خارجی و منابع خوب بگردی که فکر کنم یه سرچ کنی پیدا کنی. که اولین و آخرین حرف اینه که تمرین کنید. موفق باشید. god of war 216-07-2009, 02:08 PM"به نام خالق هستی" با سلام و خسته نباشید خدمت اساتید. خوب بریم سراغ جواب به دوست عزیزمون البته اینم گفته باشم که تمرین هم که دوستمون hamishebahar گفتن خود یک رکن اصلی در برنامه نویسی می باشد. ولی یه چند تا نکته هم هست که میتونه کمک کنه به سرعت اجرا و پردازش و .... مثل نکات زیر که به علت کمبود وقت کامل نمی باشد.:20: --------------------------------------------- 1-با استفاده از توابع استاندارد و کلاس ها به جاي نوشتن نسخه هاي معادل براي اين توابع ميتوانيد سرعت اجرا و کارايي برنامه را بالا ببريد زيرا اين توتبع که با دقت زياد نوشته شده اند به صورت موثر و کارايي اجرا مي شوند.اين روش زمان طراحي و نوشتن برنامه را کم ميکند. 2-يک دستور if ... else تو در تو مي تواند بسيار سريع تر از يک مجموعه از دستور هاي if يک انتخابي باشد زيرا احتمال خروج زود هنگام از اين دستور بعد از برقراري يکي از اين شرط ها بسيار سريع است. 3-در يک دستور if ... else تو در تو شرايطي را آزمايش کنيد که احتمال درست بودن آن در ابتداي دستور if .. . else تو در تو بيشتر است.اين کار باعث ميشود دستور if ... else تو درد تو سريعتر اجرا شود. 4-بهبود و کارايي جزعي در قطعه برنامه هاي که در داخل يک حلقه تکرار چندين بار اجرا مي شوند مي تواند براي بهبود و کارايي کل برنامه حايز اهميت فراوان و داراي نقش بسيار اساسي باشد. 5-از قرار دادن عبارت هايي که مقاديرشان در داخل حلقه تغيير نميکند جدا خود داري منيد .اما در صورت انجام اي کار بيشتر مفسر ها و کامپايلر هاي پيشرفته امروزي هنگام توليد کد زبان ماشين به طور اتو ماتيک اين گونه عبارت ها را در خارج از حلقه قرار مي دهند. 6-اگر در برنامه ها بخواهيد ميزان مصرف حافظه حد اقل مقدار ممکن يا سرعت اجرا حداکثر باشد در اين صورت بهتر است در برنامه هاي خود از اندازههاي صحيح کوچکتر استفاده کنيد. 7-اگر دستور العمل کامپيوتر براي پردازش اندازه هاي صحيح کوچکتر کارايي لازم براي اعداد صحيح با اندازه طبيعي را نداشته باشد يعني اعداد صحيحي که اندازه اش برابر اندازه ي کلمه ماشين است(يعني در کامپيوتر 32 بيتي 32 بيت و در کامپيوتر 64 بيتي 64 بيت) استفاده از اندازه هاي صحيح کوچکتر ممکن است منتهي به کندي برنامه ها شود. هميشه کارايي پيشنهادي "ار تقا دادن"را آزمايش کنيد تا مطمعن شويد اين قابليت ها واقعا کارايي را بالا مي برند. 8-دستور هاي break و continue هنگامي که به درستي مورد استفاده قرار گيرند سريع تر از روش هاي ساخت يافته متناظرشان اجرا مي شوند. 9-در زبان ++C عبارت هايي که در آنها از عملگر && استفاده شده است اگر شرط هاي گوناگون آن مستقل از يکديگر باشند احتمالا سمت چپ ترين شرط ارزش کل شرط را نادرست (false) ميکند. در عبارت هايي که از عملگر || استفاده مي کنند سمت چپ ترين شرط ممکن است ارزش کل شرط را نادرست (false) کند.اين کونه ارزيابي سريع شرط ها مي تواند زمان اجراي بر نامه را کاهش دهد. 10-حافظه اتوماتيک وسيله اي براي صرفه جويي در حافظه است زيرا متغير هاي کلاس حافظه اتو ماتيک تنها وقتي ايجاد مي شوند که اجراي برنامه در داخل بلاکي که اعلان شده اند وارد شده باشدو با خروج اجرا از آن بلاک متغيير ها از بين مي روند. 11-در زبان ++C کلاس حافظه با توصيف کننده قثلهسفثق را مي توان قبل از اعلان متغيير اتو ماتيک قرار داد تا به کامپايلر بگويد اين متغيير را به جاي حافظه ي اصلي در يکي از ثبات هاي پرسرعت سخت افزار کامپيوتر قرار دهد. 12-اگر از متغير ها به عنوان شمارنده (counter) يا مجموع کل (total) استفاده مي کنيد مي توتنيد آنهارا در ثبات هاي سخت افزار نگهداري کنيد زيرا سر بار هاي مکرر بار گذاري اين متغيير ها از حافظه در ثبات ها و ذخيره نتايج برگشتي در حافظه مي تواند از بين برود يا به حد اقل برسد. 13-استفاده از توابع خطي مي تواند منتهي به کاهش زمان اجراي برنامه شود اما طول برنامه(يعني مقدار حافظه مصرفي)را افزايش مي دهد. 14-انتقال از طريق مقدار در مواقعي که اطلاعات زياد و سنگين باشد کپي اين اطلاعات مي تواند مقدار قابل ملاحظه اي از زمان اجرا برنامه را بگيرد. 15-انتقال از طريق ارجاع به دليل داشتن سرعت اجرا و کارايي بالاي برنامه خوب است زيرا سربار کپي مقدار زيادي از داده ها را از بين مبرد. 16-براي انتقال اشيا بزرگ از پارامتر هاي ار جاع به ثابت استفاده کنيد تا ظاهر و امنيت انتقال از طريق مقدار را شبيه ساز ي کند و مانع از سربار انتقال يک کپي از شي بزرگ شود. 17-از برنامه هاي باز گشتي با شيوه فيبوناچي بالا که منجر به انفجار نمايي در احضارها مي شود خود داري کنيد. 18-در مواردي که سرعت اجرا و کارايي برنامه ها مد نظر است از روش بازگشتي استفتده نکنيد.احضارهاي بازگشتي زمان بر استو حافظه زيادي مصرف ميکند. 19-گاهي اوقات داشتن سرعت اجراي زياد و کارايي خوب مهمتر از داشتن روشني و وضوح در برنامه است. 20-انتقال آرايه از طريق ارجاع به دليل سرعت اجرا و کارايي خوب برنامه عملي منطقي است.اگر آرايه ها از طريق مقراد منتقل مي شدند آنگاه يک کپي از هر عضو بايد منتقل مي شد.براي انتقال آرايه هاي بزرگ اين کار اغلب وقت گير است و براي کپي عضو ها ي آرايه مقدار زيادي از حافظه کامپيتر مصرف ميشود. 21-گاهي او قات ساده ترين الگوريتم ها به صورت ضعيفي اجرا ميشوند.خوبي آنها در اين است که به سادگي نوشته شده آزمايش و اشکال زدايي ميشوند.گاهي اوقات الگريتم هاي پيچيده تر نيازمن آن هستند تا به حداکثر سرعت اجرا و کارايي دست يابند. 22-هرگاه لازم نباشد اشيا بزرگ را به وسيله تابع احضار شده تغيير دهيد آنهارا با استفاده از اشاره گر به داده هاي ثابت يا ارجاع هايي به داده هاي ثابت به توابع منتقل کنيد تا با بهر گيري از کارايي بالاي انتقال از طريق ارجا کمترين مصرف حافظه و بالا ترين سرعت اجرا را داشته باشيد. 23-گاهي اوقات الگوريتمي که به صورتي "طبيعي" ظاهر مي شود مي تواند حاوي مساعل حادي از نظر اجرا و کارايي نظير تعويق نا معين باشند.الگوريتم هايي را جستو جو کنيد که فاقد تعويق نا معين باشند. 24-تابع عضو داخل تعريف کلاس تابع عضو را به صورت inline تعريف کنيد (اگر کامپايلر انجام اين کار را مناسب تشخيص دهد) .اين کار باعث افزايش سرعت اجرا و کارايي برنامه مي شود. 25-به اشيا عضو به صورت صريح از طريق ليست مقدارهاي اوليه عضو مقدار اوليه دهيد.اين کار باعث حذف سربار :دوباره مقدار دهي اوليه" به اشيا عضو مي شود. 26-هنگامي که تنها يک کپي از داده براي تمام اشيا يک کلاس کافي باشد براي صرفه جويي در مصرف حافظه از داده هاي عضو static استفاده کنيد. 27-استفاده از يک تابع عضو براي دسترسي به مقدار يک داده عضو مي تواند اندکي کند تر از دسترسي مستقيم به داده باشد. 28-اگر کلاس توليد شده از طريق ارث بري بزرگتر از اندازه مورد نياز باشد (يعني حاوي کار بسيار زيادي باشد)آنگاه ممکن است منابع حافظه و منابع پردازش آنها بيهوده مصرف شود .از نزديک ترين کلاس ارث ببريد که مي تواند نياز شما را برآورده کند. 29-براي داشتن بهترين عملکرد و کارايي در پردازش فايلي با حجم زياد از i/o فرمت بندي نشده استفاده کنيد. 30-وقتي برنامه ديگر احتياج به ارجاع به فايلها ندارد به صورت صريح فايل ها را ببنديد.اين کار مي تواند استفاده از تابع حافظه را کاهش دهد(به ويژه اگر اجراي برنامه بعد از بستن فايل ادامه يابد). ------------------------- موفق باشید. mahdi7s16-07-2009, 02:40 PMبا تشکر از دوستان کاربر god of war مطلب خوبی رو گذاشتن اما منظور من افزایش سرعت در یک برنامه ی دات نتی بود.:20: مثلا من دیدم فضای نامهای کلاسهای استفاده شونده در برنامه رو در ابتدای کد اعلان نمی کنن و در هر جایی که نیازی به اون کلاس بوده با نوشتن صریح فضاهای نام و رسیدن به نام کلاس از اون استفاده کردن. آیا این چنین کاری سرعت یک برنامه ی دات نتی رو افزایش میده؟ اگه افزایش میده پس چرا در خود دات نت این کار انجام نشده ؟ و... :11: god of war 216-07-2009, 02:48 PMاین نکات کلی هستند ولی برخی از آنها مربوط به زبان ++C میباشد از جمله سوال شما. در پست های بعد سعی میشه نکات دیگری مر بوط به net. مطرح شود. موفق باشید. god of war 216-07-2009, 03:32 PMچند تا نکته دیگه هم هست دیدم اگه بگم ممکنه بدرد بخوره. ------------------------ 1-اگر مشکلات بالقواي گه گاهي در برنامه اتفاق بيفتد به هم آميختن منطق برنامه و منطق پردازش خطا مي تواند از کارايي و عملکرد برنامه بکاهد زيرا برنامه بايد (به صورت نسبتا مکرر) آزمايش هايي را انجام دهد تا تعيين کند آيا کار به درستي انجام شده است يا خير و کار بعدي انجام شود. 2-براي به حداقل رساندن تعداد دفعاتي که حافظه گرفته و آزاد مي شود بعضي از پياده سازي هاي کلاس String ظرفيت پيش فرض را بزرگتر از طول رشته در نظر ميگيرند. 3-آرايه را مي توان طوري اعلان کرد تا بتواند عضو هاي بيشتري از تعداد اقلام مورد انتظار را شامل شود اما اين کار مي تواند باعث به هدر رفتن حافظه شود در اينگونه موارد ليست هاي پيوندي باعث استفاده بهتر از حافظه مي شوند. 4-عمليات درج و حذف عضوها در يک آرايه مرتب مي توتند وقت گير باشد يعني تمام عضو هايي که بعد از عضو درج يا حذف شونده هستند بايد به صورت مناسبي انتقال داده شوند. 5-فيلد هاي بيتي باعث صرفه جويي در مصرف حافظه مي شوند. 6-متغيير هاي سراسري کارايي و سرعت اجراي برنامه ها را افزايش مدهند.زيرا با هر تابعي مستقيما مي توان به آنها دسترسي پيدا کرد.سربار انتقال داده ها به تابع حذف مي شود. ------------------ موفق باشید. mahdi7s20-07-2009, 03:12 PMمثلا من دیدم فضای نامهای کلاسهای استفاده شونده در برنامه رو در ابتدای کد اعلان نمی کنن و در هر جایی که نیازی به اون کلاس بوده با نوشتن صریح فضاهای نام و رسیدن به نام کلاس از اون استفاده کردن. آیا این چنین کاری سرعت یک برنامه ی دات نتی رو افزایش میده؟ اگه افزایش میده پس چرا در خود دات نت این کار انجام نشده ؟ و... لطفا یکی جواب این سوالمو بده!!!:11: _H2_20-07-2009, 08:49 PMسلام مثلا من دیدم فضای نامهای کلاسهای استفاده شونده در برنامه رو در ابتدای کد اعلان نمی کنن و در هر جایی که نیازی به اون کلاس بوده با نوشتن صریح فضاهای نام و رسیدن به نام کلاس از اون استفاده کردن. آیا این چنین کاری سرعت یک برنامه ی دات نتی رو افزایش میده؟ اگه افزایش میده پس چرا در خود دات نت این کار انجام نشده انجام این عمل مطلقاً هیچ تاثیر مثبت یا منفی بر سرعت اجرای کد نهایی نخواهد داشت و فقط یک جور خلاصه نویسی و صلیقه برنامه نویس است و در نهایت کدهای IL یکسانی تولید خواهد شد. البته تعریف متغییر موقت برای نگه داری یک شی و سپس انجام عملیات روی آن متغییر میتواند در افزایش سرعت موثر باشد ولی درج کامل یا ناقص namespace ها هیچ تاثیری ندارد. در نهایت کمی متاسفم که بگویم جمله زیر صحیح است! می تونم در حد سه یا چهار صفحه مطلب بنویسم چه برسه به بقیه mahdi7s20-07-2009, 10:06 PMانجام این عمل مطلقاً هیچ تاثیر مثبت یا منفی بر سرعت اجرای کد نهایی نخواهد داشت و فقط یک جور خلاصه نویسی و صلیقه برنامه نویس است و در نهایت کدهای IL یکسانی تولید خواهد شد. پس چرا برخی اینکارو انجام میدن؟؟! اینکه کارو مشکلتر میکنه و نهایتا اینجوری که میگین هیچ چیزی حاصل نمیشه!!!:11: _H2_21-07-2009, 12:15 AMسلام پس چرا برخی اینکارو انجام میدن؟؟! اینکه کارو مشکلتر میکنه و نهایتا اینجوری که میگین هیچ چیزی حاصل نمیشه!!! من الآن متوجه نشدم شما طرفدار کدام طرف قضیه هستید!!! صلیقه است! مثل دوست داشتن یک رنگ! برتری مطلقی وجود ندارد! و هر کس میتواند دلایلی بیاورد و شاید حتی این دلایل مشترک باشد و با صلیقه مختلف نتیجه مختلف را بگیرد. افرادی که هین import را انجام میدهند تا namespcae ها را تایپ نکنند، اعتقاد دارند اینطوری کد کمتر و کوچکتری تایپ میکنندو هم سریعتر کدنویسی میکنند و هم کد شلوغ نمیشود و سریعتر میفهمند! افرادی که این import را انجام نمیدهند تا namespcae را کامل تایپ کنند، (مثل خودم!) اعتقاد دارند که این طرز کدنویسی واضح تر است و کشخص است کلاس تعریف شده متعلق به کدام فضای نام و بخش تقسیم بندی شده دات نت است و باعث میشود کد را سریعتر بفهمند! سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 603]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن