PDA

View Full Version : سوال: چرا سرعت اجرا شدن برنامه های تحت WPF پایین تر از WinApp



imanx7
چهارشنبه 19 فروردین 1394, 12:40 عصر
نمیدونم شاید این مشکل منه !
ولی باور بفرمایید از موقعی که شروع به کد نویسی بر مبنای WPF کردم تا الان که 2 تا پروژه توسط این تکتولوژی نوشتن، حس میکنم برنامه هام نسبت به WinApp خیلی سرعت Load ش پایین تره !!!!
در صورتی هرجا از دوستان در فضای مجازی خوندم حاکی از این بوده این تکنولوژی سرعت نسبتا بهتری به WinApp داره!!!
اولش هم گفتم شاید مشکل از من باشه ، از دوستانی که حرفه ای تراند و زیاد با این تکنولوژی کار کرده اند تقاضا دارم راهنمایی کنن که واقعا دارم گیج میشم :اشتباه:

Mani_rf
چهارشنبه 19 فروردین 1394, 15:15 عصر
هرچند که خیلی ها معتقند که تفاوتی وجود نداره اما حقیقت اینه که برنامه ها نوشته شده با WPF به سخت افزار قوی تری برای اجرا نیاز دارند. برنامه های WinApp با استفاده از توابع Win32 api نوشته میشدن و در واقع شما برای نوشتن برنامه ازکنترل های آماده ویندوزی استفاده میکردید که تغییرات اونها برای سیستم عامل کاملا قابل پیشبینی بود. اما وقتی پای WPF به میان اومد؛ فرم های شما موقع اجرا شدن به کارت گرافیک سپرده میشن تا بر مبنای کدی که نوشتید و تغییرات ظاهری و حتی درونی که روی کنترل ها ایجاد کرده اید رندر بشن و بعد نمایش داده بشن. رندر کردن فرم ها و کنترل ها، پردازش کردن انیمیشن ها و همچنین پیاده سازی مفاهیمی که توی WPF روی آنها به شدت تمرکز شده مثل بایندینگ ها باعث میشه که پردازش بیشتری مورد نیاز باشه.
برای مشاهده بهتر این موضوع میتونید یک برنامه خالی WPF رو اجرا کنید و ببینید که بین 12 تا 14 مگ رم رو اشغال میکنه. تو شرایطی که WinApp در حدود 5مگ رم مصرفی داره.

البته همه اینها برای WPF ضعف به حساب نمیاد. این تکنولوژی برای سیستم های امروزی با سخت افزار های قدرتمند موجود طراحی شده و نباید توقع داشت که روی سیستم های خیلی قدیمی (مثلا P4) کارایی داشته باشه. در ازای مصرف منابع امکانات فوق العادع در اختیار برنامه نویس و کاربر قرار میده کاملا منطقی هست و از توان WinApp ها خارجه.

SabaSabouhi
پنج شنبه 20 فروردین 1394, 07:48 صبح
سلام
ضمن تایید نوشته‌های دوستم Mani_rf اضافه می‌کنم که بیشتر کندی برنامه‌های Wpf هنگام Load اولیه هست و دلیلش هم اینه که Resourceهای بیشتری باید Load بشن.
شما یه برنامه WinForm و Wpf رو برای مقایسه تولید و اجرا کن، اختلاف سرعت رو می‌بینی. بعد برنامه‌ها رو ببند و دوباره باز کن. این بار اختلاف خاصی مشاهده نمی‌کنی.
دلیلش هم اینه که Resourceها همون بار اول Load شدن.
بعد از باز شدن برنامه‌ها هم دیگه اختلاف سرعت خاصی مشاهده نمی‌شه.

صبا صبوحی