PDA

View Full Version : مقایسه سرعت cpp و C#‎ در پردازش تصویر



erikson
شنبه 17 تیر 1391, 16:30 عصر
میخواستم بدونم که من پروژه پردازش تصویرم را با C انجام دهم سرعت بیشتری دارد یا اگر با پوینترهای #C انجام دهم؟
لطفا راهنمایی کنید...

pswin.pooya
شنبه 17 تیر 1391, 18:02 عصر
اين حتي فكر كردن هم لازم نداشت.

C# كلا از نظر سرعت تعطيله. من يه تست پردازش تصوير زدم توي سي شارپ حدود 20 دقيقه و داخل C++ حدود 50 ثانيه طول كشيد.

erikson
شنبه 17 تیر 1391, 18:12 عصر
شما درست می گید اما پوینترهای C# سرعت خیلی بالایی دارند، من حتی تو یه سایت خارجی خوندم که اگر در #C به صورت Unsafe و با پوینترها کد بزنیم، در بعضی مواقع سریعتر از توابع extern شده در c کار می کند... من فقط می خوام درباره صحت این موضوع تحقیق کنم...

dousti_design
شنبه 17 تیر 1391, 18:20 عصر
C#‎ كلا از نظر سرعت تعطيله. من يه تست پردازش تصوير زدم توي سي شارپ حدود 20 دقيقه و داخل C++‎ حدود 50 ثانيه طول كشيد.
:متعجب::متعجب: میشه بیشتر توضیح بدید چه تستی انجام دادید؟!!!!!!!!!!!!!

مصطفی ساتکی
شنبه 17 تیر 1391, 20:11 عصر
C#‎‎ زبان native هم که نیست بگم میشه مقایسه ای از نظر performance داشت به هر حال ما بیایم گوسین را بر روی تصویر 2000*2000 با کرنل 101*101 روی یک thread تو هر 2 تا اجرا کنیم به شرط اینکه تصویر مقصد float هم باشه به نظر شما C#‎‎ می تونه تو این حالت با C++‎‎ برابری کنه .
زبانی مثل C++‎‎ کد ماشینی که براش تولید میشه هم کمتره و هم بهینه تر همچنین سطوح مختلف بهینه سازی داره

برای صحت این قضیه شما می تونید benchmark کتابخانه OpenCV رو با دیگر کتابخانه مشاهده کنید که فاصلشون خیلی زیاده
تو C# بحث intrinsic runtime check وجود داره که می تونه زمانگیره باشه از طرفی شما تو C++ می تونید از دستورات SSE استفاده کنید که چنیدین برابر سرعت رو افزایش می ده از طرفی تو زبان C++ شما مدل حافظه و alignment حافظه رو هم مشخص می کنید و اگر در حالاتی بخاید کد بهینه بنویسید که از malloc و free و هر گونه استفاده از حافظه دینامیک نداشته باشید(چون خود این چندین کلاک صرف می کنند) کد شما فوق العاده سریع تر میشه.

در ضمن زبانی مثل c# دارای garbage collector هستش که واقعاً تو بحث performance دستپاگیر هستش.

نکته :من به شخصه خودم یک engine رو از Delphi زبان native ی هم هست به c++ تبدیل کردم 2 برابر افزایش سرعت بعد تبدیل داشتم بدون هیچ گونه بهینه سازی فقط تبدیل خط به خط

موفق باشید

erikson
شنبه 17 تیر 1391, 22:08 عصر
این متن را از یه سایت خارجی پیدا کردم...میشه نظرتو راجع به این بگی؟

متن:
An unsafe C#‎‎ method may also be faster than calling an external C function, since there is no overhead associated with leaving the managed execution environment.

این هم لینک سایت:
http://my.safaribooksonline.com/book/programming/csharp/9781449379629/advanced-csharp/unsafe_code_and_pointers