PDA

View Full Version : سوال: راه های کاهش زمان کامپایل



ehsan_faal
شنبه 27 تیر 1394, 21:15 عصر
سلام. من دارم روی یه الگوریتمی کار میکنم تا نهایتا کد سنتز یه جور فیلتر رو ازش در بیارم.توش از boost و Eigen استفاده کردم.زمان کامپایل حدود 10 دقیقه است.
یه روشی به اسم pImple( اگه درست نوشته باشم) برای کاهش زمان کامپایل استفاده میشه.
میخواستم بدونم منطق پشت این روش چیه و کلا باید چیکار کرد تا زمان کامپایل کمتر بشه؟
اگه ممکنه به زبان ساده بگید تا متوجه بشم.(از محیط Qt Creator و کامپایلر MinGW استفاده میکنم)
با تشکر

rahnema1
یک شنبه 28 تیر 1394, 22:42 عصر
سلام
مگه تعداد خطوط کدی که نوشتید چه قدره که کامپایلش این همه طول بکشه. فکر کنم بیشترین زمان صرف کامپایل دوباره کتابخانه هایی که اشاره کردید مثل boost می شه.
بهتره ابتدا کتابخانه ها را قبلا کامپایل کرده باشید که بعدا فقط از فایلهای با پسوند o. یا a. یا dll استفاده کنید
فقط هدر کتابخانه را include کنید و کاری به فایلهای cpp اون نداشته باشید و به جای اون از کامپایل شده استفاده کنید
یه سری راهکار هم جهت کاهش زمان کامپایل در تاپیک زیر بحث شده
http://barnamenevis.org/showthread.php?493157

ehsan_faal
یک شنبه 28 تیر 1394, 22:57 عصر
ممنون بابت توضیحاتتون.
چون این مقاله ای که روش دارم کار میکنم از اعداد مختلط گرفته تا خود چبی شف و مشتق مرتبه اول و دومش و حد انتگرال و ... رو شامل میشه رو همین حساب کد زیادی رو هم باید براش بنویسم. البته هنوز به قسمت حد و انتگرالش نرسیدم.
کتابخونه خوب واسه اینجور کارها که شبیه سینتکس متلب باشه توی ++C وجود داره؟

rahnema1
یک شنبه 28 تیر 1394, 23:07 عصر
حالا اگه کار علمی و مقاله هست پیشنهاد من اینه که از همون متلب استفاده کنید که واقعا راحت الحلقومه
همین موضوعاتی که ذکر کردید برعکس متلب ممکنه در یک کتابخانه مجتمع نباشه و ممکنه بعضی کتابخانه ها به زبان C مثلا باشه
من یک کتابخانه واسه کارهای جبری به نام armadillo دیده بودم که شبیه متلبه
خلاصه باید دنبال اینها بگردید

ehsan_faal
یک شنبه 28 تیر 1394, 23:24 عصر
واسه اینجور کارها به نظرتون استفاده از Ceemple خوب نیست؟
این جور که تو سایتش گفته خیلی سرعت کار رو بالا میبره و کتابخونه های زیادی هم توی خودش داره.

rahnema1
یک شنبه 28 تیر 1394, 23:32 عصر
ببینید همین برنامه هایی مثل متلب octave یا امثال اینها بهترین گزینه هست. مگه اینکه سرعت برای شما اهمیت زیادی داشته باشه
حتی به راحتی با ++C میتونید برای مثلا متلب فایل mex درست کنید که اون قسمتهای کم سرعت با سرعت بالا اجرا بشه
تو اینجور کارها حتما واسه استفاده از ++c باید توجیه داشته باشید. چون به جای اینکه انرژی و فکر و وقت شما صرف حل مساله بشه، بیشتر صرف پیاده سازی و سینتکس ++C میشه

ehsan_faal
یک شنبه 28 تیر 1394, 23:35 عصر
من این مقاله رو قبلا توی متلب پیاده سازی کردم و نتیجه هم گرفتم.
دنبال ساخت یه برنامه ازش هستم و بین زبانهای برنامه نویسی به نظرم اومد که ++C توی همه زمینه ها کتابخونه داره و صد البته مزیتهای دیگه ی این زبان باعث این تصمیم شد.

rahnema1
یک شنبه 28 تیر 1394, 23:47 عصر
کار خوبیه. در مورد کتابخونه ها هم همین طور که اشاره کردم باید دنبالشون بگردید. همین سورس برنامه ای مثل octave جاهایی که با c یا ++C نوشته شده می تونه به شما کمک کنه
ceemple هم من تابحال باهاش کار نکردم اگه ترکیب opencv و چیزهای دیگه باشه خوبه چون توی opencv هم برای کار با ماتریس کلاسهای خوبی هست

Desaghi
دوشنبه 29 تیر 1394, 07:25 صبح
زمان کامپایل به دستورات و اپشن های کامپایلر هم ربط داره. مثلا -o2-o3-g