مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

saad

عضویت از 1395/03/11

آیا پرفورمنس برنامه های C# تحت DotNET Core 3 به سرعت برنامه های C++ تحت Win32 میرسه؟

  • یکشنبه 28 مرداد 1397
  • 18:54
تشکر میکنم

سلام دوستان.

اگه مطلع باشید مایکروسافت اعلام کرده که با انتشار DotNET Core 3.0 میشه تحت دات نت کور برنامه های ویندوز فرم نوشت.

میخوام بدونم آیا پرفورمنس برنامه های ویندوز فرمی NET Core 3 که با C# نوشته شده، برابر با پرفورمنس برنامه های C++ - Win32 خواهد بود؟

لطفآ اگه اینو نمیدونید اما انگلیسی تون خوبه در سایتهای خارجی بپرسید. ممنون.

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • سه شنبه 30 مرداد 1397
  • 13:55

باسلام

باید عرض کنم که در هر صورت سرعت زبان هایی مثل سی شارپ و جاوا و سایر زبان هایی که در نهایت باید تفسیر بشن تا کد اسمبلی تولید بشه، سرعتشون از زبانی مثل سی پلاس پلاس کمتره

ولی در دنیای امروز این زبان نیست که سرعت نهایی رو تعیین میکنه و فریم ورک هایی که باهاشون کار میکنین نقش خیلی مهم تری رو بازی میکنند.

مثلا هوش مصنوعی و یا داده کاوی عملا با پایتون انجام میشه که خیلی زبان کندی هست حتی به نسبت سی شارپ

در جواب شما باید بگم که dotnet core از نظر بازدهی فریم ورک خیلی بهینه هستش اما تا الان روی وب تست شده و بنچمارک هاش هم موجوده و به یقین میتونم بگم بهترین فریم ورک restful هستش

اما روی ویندوز وقتی هنوز عرضه نشده نمیشه چیزی گفت!

در آخر

طبق تجربه ی من

این زبان و حتی در لایه ی بالاتر فریم ورک نیست که روی سرعت شما تاثیر میذارخ، بلکه طراحی نرم افزار هستش که تعیین کننده ی سرعت و توسعه پذیری یک نرم افزار هستش.

به نظرم خیلی حساس نشین روی این موضوع

کسایی که نرم افزارهایی می نویسن که قراره نزدیک به سخت افزار کار کنه مثلا نرم افزار کنترل هواپیما یا ECU خودرو، میرن سمت سی پلاس پلاس، چون ذره ای سرعت میتونه تعیین کننده باشه و اونجا بالاترین بازدهی سخت افزار مهم هست.

برای نرم افزارهایی که ما روزمره کار میکنیم قطعا سی شارپ و جاوا و حتی پلترفم هایی که تحت node.js اجرا میشن مثل Electron و شما میای تماما javascript کد میزنی هم گزینه های برتر هستن.

مثلا whatsapp دسکتاپ با Electron نوشته شده و تماما با html, css, js هستش که تحت node.js اجرا میشه و شرکت بزرگی مثل فیسبوک تمام سربار جاوااسکریپت و تفسیرهای عجیب رو قبول کرده!

اما تلگرام دسکتاپ با Qt که فریم ورک سی پلاس پلاس هست نوشته شده.

انتخاب زبان هیچ وقت روی نرم افزار های روزمره تاثیر performance نداره، مگه اینکه خیلی نزدیک سخت افزار کار کنین که بهترین فریم ورک Qt هستش

موفق باشید.

کاربر سایت

saad

عضویت از 1395/03/11

  • چهارشنبه 31 مرداد 1397
  • 15:52

ممنون از توضیحات خوبتون. یه سوال دیگه برام بوجود اومده. مگه Win32 خودش یک فریم‏‏‎ورک نیست؟ مثل دات نت کور.

به نظرتون دات نت کور میتونه با پیشرفت کردن به پرفورمنس فریمورک Qt برسه؟

در ضمن بگم که من سالهاست عاشق دات نت و سی شارپ هستم و انتخاب اول و آخرم بوده. از زمانی که دات نت فریورک ورژن 1.1 بود شروع کردم به یادگیری. هم تحت وب کار میکردم هم تحت ویندوز فرم. اما از بدشانسی یا چشم شور تصادف کردم و ضربه مغزی شدم و دچار بیماری مغزی شدم و دیگه کشش ندارم. اما امیدوارم که خوب بشم. قطعآ هیچ مریضی ای درمان ناپذیر نیست.

کاربر سایت

salman_b

عضویت از 1396/02/18

  • پنجشنبه 1 شهریور 1397
  • 12:58

باید عرض کنم که Win32 یک فریم ورک نیست، بلکه رابط بین ویندوز و برنامه ای هستش که می نویسید.

مثلا زمانی که در سی شارپ زمان رو از ویندوز میگیرید، درواقع یک درخواست به win32 می دهید تا زمان سیستم را به شما برگرداند.

در حال حاضر پلتفرم WPF بهترین پلتفرم سی شارپی برای برنامه نویسی اپلیکیشن ویندوز هستش اما طبق مقایسه خودم از نظر گرافیکی و render کردن صفحات و کامپوننت ها کمی کندتر از Qt هستش.

اما از نظر سرعت پردازشی و مدیریت چند نخی و یا معماری سه لایه و data binding هیچ مشکلی نداره و خیلی پر سرعت هستش.

جایی هم benchmark مبنی بر مقایسه Qt با WPF ندیدم و تجربه شخصی من اینه که WPF چون از DirectX برای پردازش تصویر استفاده می کنه یه مقدار نسبت که Qt که از کتابخانه های Native برای اینکار استفاده می کنه کمی کندتر باشه، اما این رو در نظر بگیرید که واسط DirectX خیلی قدرتمندتر میکنه سیستم رو و امکانات بیشتری نسبت به OpenGL خام میده، تا جایی که برای نصب هر بازی کامپیوتری روی ویندوز باید نسخه ی DirectX مورد نظر رو داشته باشید و فریم ورک هایی مثل Qt چون زیرلایه هاشون چون از امکانات پایه سخت افزاری استفاده میکنه خیلی از قابلیت ها رو به شما نمیده و برای همین پر سرعت تر هست.

مثلا یادمه تا چند سال پیش هیچ بازی کامپیوتری درست حسابی رو لینوکس نصب نمیشد، حالا چرا ؟ چون لینوکس درایور کارت گرافیک نداشت و می خواست از امکانات پایه استفاده کنه، که این موضوع سرعت رو بالا میبره اما خیلی از امکانات رو از دست میده ( در نسخه های جدید این مشکل برطرف شده )

اگه بخواین برنامه WPF رو روی کامپیوتری که درایور های کارت گرافیکش نصب نیست اجرا کنید، کندی محسوسی رو مشاهده می کنید در صورتی که برنامه هایی که با Qt نوشته میشه چون چندسکویی هستن و واسبتگی به کتابخانه های خارجی یا راه انداز ها ندارند و کاملا در سطح ماشین و زیرلایه های سیستم عامل هستند نیازی به نصب درایور کارت گرافیک یا DirectX ندارند و پر سرعت تر اجرا میشن، اما سختی های توسعه خودشونم دارن.

با اومدن DotNet Core چون قرار بوده وابستگی های بین سیستم عامل و زبان برنامه نویسی از بین بره به احتمال زیاد DotNet Core برای لایه ی اپلیکیشن و همینطور پردازش گرافیکی به صورت Native و نزدیک به سخت افزار عمل خواهد کرد و البته و بسیار پر سرعت.

کاربر سایت

saad

عضویت از 1395/03/11

  • جمعه 18 آبان 1397
  • 22:43

دوستان من این سوالو تو وبلاگ رسمی دات نت پرسیدم و جوابمو دادن:

https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/#comment-732445

من فقط اینو خوب فهمیدم که در دات نت کور پردازشهای غیر گرافیکی (محیط کاربری) که در پشت پرده اپلیکیشن انجام میشه، سرعتش از Win32 هم بیشتر میشه. ایول laugh. و اینکه برابر یا کمتر یا بیشتر بودن پرفورمنس در دات نت کور بستگی به شرایط مختلف داره و به این سادگی نیست که بگیم بله سرعتش بیشتره یا کمتره. بقیه شو لطفآ شما که انگلیسی تون بهتره به فارسی توضیح بدید. ممنون.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)