میخواستم بدونم که من پروژه پردازش تصویرم را با C انجام دهم سرعت بیشتری دارد یا اگر با پوینترهای #C انجام دهم؟
لطفا راهنمایی کنید...
Printable View
میخواستم بدونم که من پروژه پردازش تصویرم را با C انجام دهم سرعت بیشتری دارد یا اگر با پوینترهای #C انجام دهم؟
لطفا راهنمایی کنید...
اين حتي فكر كردن هم لازم نداشت.
C# كلا از نظر سرعت تعطيله. من يه تست پردازش تصوير زدم توي سي شارپ حدود 20 دقيقه و داخل C++ حدود 50 ثانيه طول كشيد.
شما درست می گید اما پوینترهای C# سرعت خیلی بالایی دارند، من حتی تو یه سایت خارجی خوندم که اگر در #C به صورت Unsafe و با پوینترها کد بزنیم، در بعضی مواقع سریعتر از توابع extern شده در c کار می کند... من فقط می خوام درباره صحت این موضوع تحقیق کنم...
:متعجب::متعجب: میشه بیشتر توضیح بدید چه تستی انجام دادید؟!!!!!!!!!!!!!نقل قول:
C# كلا از نظر سرعت تعطيله. من يه تست پردازش تصوير زدم توي سي شارپ حدود 20 دقيقه و داخل C++ حدود 50 ثانيه طول كشيد.
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 برابر افزایش سرعت بعد تبدیل داشتم بدون هیچ گونه بهینه سازی فقط تبدیل خط به خط
موفق باشید
این متن را از یه سایت خارجی پیدا کردم...میشه نظرتو راجع به این بگی؟
متن:
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...e_and_pointers