2008-12-15 14 views
15

की प्रदर्शन तुलना XAML संकलित हो जाने के बाद, इस तरह के कोड निष्पादित करने में कोई अंतर नहीं होना चाहिए।
Winforms (कोड) की तरह:Winforms और WPF

Form formPeter = new Form(); 
Textbox textbox = new Textbox(); 
Label l1 = new Label1(); 

Xaml, कार्यावधि में पार्स नहीं प्राप्त करता है के रूप में मैंने सोचा था कि ... :-)

लेकिन के बारे में क्या नियंत्रण के बहुत से प्रतिपादन बड़ा रूपों में से/निष्पादन? कौन सी तकनीक तेजी से है?

उत्तर

20

कौन सा प्रौद्योगिकी तेजी से होता है? मुझे डर है कि आपके प्रश्न में वास्तव में एक साधारण जवाब नहीं है।

एक्सएएमएल के बारे में आपकी टिप्पणी रनटाइम पर पार्स नहीं की जा रही है, यह सच और गलत दोनों है। जबकि एक्सएएमएल को बीएएमएल नामक एक सामान्यीकृत बाइनरी संस्करण (आपके आवेदन में संसाधन के रूप में एम्बेडेड) का विश्लेषण नहीं किया गया है, तो रनटाइम पर पार्स किया गया है। यह कहने के लिए कि जीडीआई की तुलना में डायरेक्टएक्स तेज है, एक सरलीकरण का कुछ भी है - डब्ल्यूपीएफ और जीडीआई-आधारित प्रतिपादन प्रौद्योगिकियों में सिर्फ अलग-अलग प्रदर्शन विशेषताएं हैं। उदाहरण के लिए डब्ल्यूपीएफ एक बनाए रखा प्रतिपादन मोड का उपयोग करता है, जबकि WinForms और अन्य जीडीआई-आधारित प्रौद्योगिकियां नहीं करते हैं। डब्ल्यूपीएफ ऑब्जेक्ट्स बहुत भारी वजन होते हैं क्योंकि वे अपने Winforms समकक्षों की तुलना में कई और अधिक गुणों का समर्थन करते हैं। हमारे पास दशकों का ज्ञान है कि जीडीआई कैसे तेजी से बढ़ाना है, और केवल डब्ल्यूपीएफ और एक्सएएमएल के साथ अपेक्षाकृत कम समय है।

डब्ल्यूपीएफ अनुप्रयोग लिखने के लिए पर्याप्त तेज़ है, लेकिन आपको लगातार सतर्क रहने की आवश्यकता है कि आपकी तत्व संख्या गिनती नहीं है (उदाहरण के लिए अत्यधिक जटिल टेम्पलेट्स बनाकर, और फिर उन्हें अपने यूआई में सैकड़ों या हजारों बार दोहराएं)। इसके अलावा WPF विभिन्न ग्राफिक्स हार्डवेयर पर अलग-अलग प्रदर्शन करता है (क्योंकि यह आंतरिक रूप से डायरेक्टएक्स पर कॉल करता है)। 2 डी सामग्री WPF में ठीक होनी चाहिए, भले ही इसे पूरी तरह से सॉफ़्टवेयर में प्रस्तुत किया गया हो (भले ही यह वर्चुअल मशीन पर होगा) लेकिन एनिमेटेड, एंटी-एलाइज्ड 3 डी तत्वों के साथ वास्तविक GPU पावर की आवश्यकता होती है। जैसे-जैसे समय बढ़ता है और ग्राफिक्स हार्डवेयर अधिक शक्तिशाली और प्रचलित हो जाता है और डब्ल्यूपीएफ को कैसे प्रदर्शित किया जाता है, इस बारे में ज्ञान हमें आगे बढ़ने के लिए डब्ल्यूपीएफ को आगे बढ़ना चाहिए (मान लीजिए कि यह कुछ परिदृश्यों के लिए ... अब कुछ है ...। तो मुझे लगता है कि जवाब "यह निर्भर करता है"।

+0

मैं कहूंगा कि WPF के स्पैस स्टोरेज इंफ्रास्ट्रक्चर के कारण डब्ल्यूपीएफ ऑब्जेक्ट हल्का वजन होता है। निर्भरता संपत्ति मान केवल तभी संग्रहीत होते हैं जब वे अपने डिफ़ॉल्ट मान से भिन्न होते हैं, इसलिए स्मृति पर बड़ी बचत होती है। –

+3

मैं उत्सुक और टर्मिनल सर्वर पर प्रदर्शन के बारे में थोड़ा निराशावादी हूं। – Guge

+2

साथ ही आपको होना चाहिए, गेज। डब्ल्यूपीएफ नियंत्रण के प्रतिनिधित्व वाले आदिम आदेशों या टोकन के बजाए ग्राफिक्स भेजता है। AFAIK, माइक्रोसॉफ्ट ने इस स्थिति को ठीक करने के लिए कुछ भी करने के लिए प्रतिबद्ध नहीं किया है, या तो। –

6

डब्ल्यूपीएफ देशी विंडोज जीडीआई के बजाय प्रतिपादन (जो बहुत तेज़ है) के लिए डायरेक्टएक्स का उपयोग करता है।

जैसा कि आप पहले से ही जानते हैं, मूल जीडीआई बिटमैप आधारित है। चूंकि डब्ल्यूपीएफ वेक्टर आधारित है, इसलिए डब्ल्यूपीएफ जीडीआई की तुलना में हार्डवेयर समर्थन का उपयोग कर सकता है।

कभी भी, डब्ल्यूपीएफ या विनफॉर्म का चयन करने का निर्णय अन्य कारकों पर भी निर्भर करता है - यूआई में आपको जो लचीलापन चाहिए, आपके आवेदन की कितनी जरूरतों का समर्थन करता है आदि। डब्ल्यूपीएफ विनफॉर्म के लिए प्रतिस्थापन नहीं है - और यह सभी समस्याओं के लिए एक चांदी बुलेट नहीं है।

अधिक हार्डवेयर त्वरण सुविधाओं के साथ आने के साथ, डब्ल्यूपीएफ आपके विनफॉर्म अनुप्रयोगों की तुलना में काफी बेहतर प्रदान कर सकता है।

कुछ दिलचस्प ब्लॉग मैंने ईलियर पढ़ा।

John's Post

Rob's Post

3

डब्ल्यूपीएफ ड्राइंग बहुत तेज़ है, लेकिन ऑब्जेक्ट्स भारी हैं। यदि आप 1000 अलग-अलग बटनों में फेंकते हैं, तो यह क्रॉलिंग होगा। दूसरी ओर, उन बटनों में महत्वपूर्ण प्रदर्शन हिट के बिना जटिल पारदर्शिता और ग्रेडियेंट हो सकते हैं।