PDA

View Full Version : مقایسه متلب و سی شارپ



R_khaleghi
پنج شنبه 23 مهر 1394, 13:35 عصر
سلام به همه دوستان
مقاله ای می خواهم تنظیم کنم تحت این عنوان که آیا سی شارپ از متلب سریع تر است؟؟
اگر هست چگونه و مثالی بزنم
کسی هست که فیلم یا نمونه کدی داشته باشد که دو کد مشابه را در سی شارپ و متلب تست سرعت کند و نشان دهد کدام سریع تر است؟
ممنونم

abdullah20
پنج شنبه 23 مهر 1394, 19:36 عصر
شاید اگر از هر کسی بپرسید بگه متلب
چرا؟چون میگه مطالب همش با فرمول ها ریاضی کوتاه و ساده کار میکنه
ولی من در چند تا مورد تست کردم مشاهده کردم سرعت سی شارپ بیشتره ولی در کل بستگی به نوع کدنویسی هم در سی شارپ هم در متلب داره
که البته هر چقدر هم در سی شارپ کد تمیز بنویسید به ++c نخواهد رسید

reza_ali202000
جمعه 24 مهر 1394, 00:23 صبح
سی شارپ به شدت سرعت بالاتری داره و میشه گفت ریل تایم هست ولی متلب خیر.
نورال نتورک رو دقیقا با کدهای یکسان(منظور از نظر الگوریتمیک) پیاده سازی کردم، خروجی ها یک سان بود ولی سرعت ها به شدت متفاوت.
چون کار برای دانشگاه صنعتی مالک اشتر بود، متاسفانه نمیتونم نمودارهای سرعتیش رو بهتون بدم.

R_khaleghi
جمعه 24 مهر 1394, 22:19 عصر
ممنون از توضیحات شما دوستان عزیز.
ولی دوستان کسی نیست بتواند بیشتر برایم توضیح دهد.
حتی الامکان مثالی بزند تا بهتر متوجه بشوم.

rahnema1
شنبه 25 مهر 1394, 08:18 صبح
سلام
در سی شارپ کد ها ابتدا به طور کامل تفسیر و سپس توسط کامپایلر jit کامپایل می شن و برنامه کامپایل شده اجرا می شه
اما در متلب از ترکیب مفسر و jit استفاده می شه
یعنی مثلا ما از حلقه for استفاده می کنیم. هر دفعه که حلقه for اجرا می شه باید تفسیر( مثلا به صورت پیمایش درخت عبارت یا تفسیر مجدد) و اجرای کد انجام بشه که همین باعث افزایش زمان اجرا می شه
اما در بعضی جاها jit به کمک مفسر متلب میاد و بعضی از قسمتها را کامپایل می کنه که سرعت بیشتری داشته باشه و نیاز به تفسیر مجدد نباشه البته این jit دامنه عملش نسبت به کامپایلر jit سی شارپ محدود تره و فقط بعضی قسمتها را می تونه بهینه کنه
ضمن اینکه عملیات بر روی ماتریسها و کارهای جبری و خیلی از تابعها در متلب توسط کتابخانه های اختصاصی این کار انجام می شه که با ++C نوشته شده اند و سرعت فوق العاده ای دارند
بنابراین در نوشتن برنامه های متلب توصیه می شه تا ممکنه از نوشتن for و if و چیزهای مانند اون خودداری بشه و تابعهای آماده خود متلب استفاده بشه تا از حداکثر سرعت کتابخانه ++C که در متلب هست ستفاده بشه (vectorize کردن)
در هر صورت این بسته به برنامه متلب شما داره که راجع به چی باشه و چه طور نوشته شده باشه اگه حلقه ها زیاد استفاده شده باشه و مرتب در داخل حلقه تابعهایی که خودمون نوشتیم صدا زده بشه کارایی متلب پایین میاد اما در شرایط مشابه سی شارپ چنین محدودیتی نداره
در عوض اگه کد شما شامل عملیات جبری سنگین روی آرایه های بزرگ و همچنین استفاده از تابعهای بهینه سازی مثل fft و svd و ..باشه مطمئنا متلب سرعت بهتری داره
اما هیچ کدوم از اینها می تونه جای اون یکی را بگیره؟
متلب: سهولت زبان و اختصاصی و خوش دست بودن این زبان جهت عملیات ماتریسی و هزاران تابع و کتابخانه کاربردی و اختصاصی جهت پردازش و مسائل علمی
سی شارپ: زبان همه منظوره جهت تولید نرم افزار های کاربردی، برای عملیات جبری خوش دست نیست، کتابخانه های علمی خیلی کم و محدود( نسبت به متلب) و سرعت خوب ( نه به خوبی ++C)
اما یک زبان برنامه نویسی نسبتا جدید به نام julia هست که اصلا از مفسر استفاده نمی کنه و کامپایلر jit داره ضمن اینکه جهت عملیات جبری و ماتریسی کاملا بهینه شده و سهولت و سادگی متلب را داره اما چون نسبتا در اول راهه کتابخانه های کمتری نسبت به متلب داره
یعنی هم مزایای سی شارپ و هم متلب را داره توی بنچ مارکها هم نشون داده سرعت بسیار بالایی داره :لبخند: