PDA

View Full Version : سرعت سی شارپ بهتر است یا متلب؟



amirali91
یک شنبه 16 شهریور 1393, 06:47 صبح
با سلام خدمت دوستان
من الگوریتم مورچگان رو برای یک مسئله در متلب پیاده سازی کردم،این برنامه تعداد تکرارهای زیاد در حد 3000 تکرار داره،از اینرو رسیدن به جواب چند ساعت زمان میبره.
سوالم اینه که اگر برنامه رو به سی شارپ تبدیل کنم سرعت اجرا بیشتر میشه یا نه؟
ممنون

rahnema1
یک شنبه 16 شهریور 1393, 07:50 صبح
سلام
بستگی داره که دربرنامه متلب چه قدر از حلقه استفاده کرده باشید. بعضی محاسبات متلب بدون استفاده از حلقه به راحتی قابل انجام هست و سرعتی معادل سرعت ++c داره
در هر صورت اگه بیشترین سرعت مد نظر شماست پیشنهاد من استفاده از ++c هست نه سی شارپ

amirali91
یک شنبه 16 شهریور 1393, 07:56 صبح
حلقه های کد من در واقع همان تکرارهای برنامه هستند،یعنی یک عمل معین توسط تمام مورچه ها و در 3000 تکرار انجام میگیره

rahnema1
یک شنبه 16 شهریور 1393, 08:06 صبح
باز هم تا برنامه را نبینیم نمیشه نظر داد که در کدوم سرعت بیشتر میشه میشه در متلب یک برنامه را به دو صورت نوشت یک یکی ساعتها طول بکشه و یکی دیگه زمان کمتر

elec60
یک شنبه 16 شهریور 1393, 12:05 عصر
من تست كردم: سرعت سي شارپ تو الگوريتم هافمن(شبكه عصبي) با پياده سازي يكسان از MATLAB خيلي بيشتر بود.

NASA's Spaceman
یک شنبه 16 شهریور 1393, 13:19 عصر
مشکل اکثر کسایی که با سی شارپ کار میکنن قوی نبودن ریاضیشون هست از جمله خودم
مثلا خیلی راحت میشه یه عملیات که باید تو یه حلقه هزار بار تکرار بشه رو با یه معادله ریاضی نوشتش که اونوقت سرعتش با سی پلاس پلاس یکی میشه
من دقیقا یه مورد مثل همین نیاز داشتم که با همین روش مشکل سرعت رو حل کردم و بعد کد رو توی thread قرار دادم اونوقت سی شارپ=سی پلاس پلاس
به نظرم ریاضی تو سرعت برنامه هامون خیلی تاثیر داره
با سپاس Spaceman

rahnema1
یک شنبه 16 شهریور 1393, 20:03 عصر
من دقیقا یه مورد مثل همین نیاز داشتم که با همین روش مشکل سرعت رو حل کردم و بعد کد رو توی thread قرار دادم اونوقت سی شارپ=سی پلاس پلاس
با سپاس Spaceman

البته فکر کنم علاقه شما به سی شارپ خیلی زیاد باشه . اما متاسفانه باید بگم ایراد سی شارپ در سرعت کم یک ایراد ذاتیه که حتی با ریاضی هم قابل حل نیست. چون ++c کد native تولید می کنه اما سی شارپ ...

حتی اگه یه جایی سرعت سی شارپ با سی پلاس پلاس برابری کنه علتش اینه که در واقع داره از یک کد native استفاده می کنه ( مثل dll های تولید شده با ++c )
و همین طوره قضیه متلب

barnamenevisjavan
یک شنبه 16 شهریور 1393, 21:40 عصر
F# رو هم یه تست کنید کلا برای اینجور مسائل خیلی کار راه اندازه جوری که خود ماکروسافت گفته سرعت اجرا رو چندین برابر بیشتر میکنه