2008-10-21 16 views
48

मुझे विंडोज प्रेजेंटेशन फ्रेमवर्क के साथ प्रोग्रामिंग पसंद है। अधिकांशतः मैं WPF और XAML का उपयोग कर ब्राउज़र-जैसे ऐप्स लिखता हूं।डब्ल्यूपीएफ कार्यक्रमों को कैसे बढ़ाएं?

लेकिन वास्तव में मुझे डर लगता है कि डब्ल्यूपीएफ की धीमी गति है। केवल कुछ नियंत्रण वाले एक साधारण पृष्ठ को तेज़ी से लोड किया जाता है, लेकिन जैसे ही कोई पृष्ठ एक किशोर वीन थोड़ा अधिक जटिल होता है, जैसे डेटा प्रविष्टि फ़ील्ड, एक या दो टैब नियंत्रण और सामान, जैसे दर्दनाक हो जाता है।

ऐसे पृष्ठ की लोडिंग एक से अधिक सेकंड ले सकती है। सेकेंड, वास्तव में, विशेष रूप से इतने तेज़ कंप्यूटर पर नहीं (पढ़ें: ग्राहक कंप्यूटर) इसमें उम्र लग सकती है।

पृष्ठ पर मूल्य बदलने के साथ ही। डब्ल्यूपीएफ यूआई के बारे में सब कुछ किसी तरह से sluggy है।

यह इतना मतलब है! वे मुझे यह सुंदर ढांचा देते हैं, लेकिन इसे इतनी उत्तेजित कर देते हैं कि मुझे हर समय अपने ग्राहकों से माफ़ी मांगनी पड़ेगी!

मेरे प्रश्न:

  1. कैसे आप WPF में तेजी लाने करते हैं?
  2. आप बाधाओं को कैसे प्रोफाइल करते हैं?
  3. आप धीमेपन से कैसे निपटते हैं?

चूंकि यह WPF के साथ एक सार्वभौमिक समस्या प्रतीत होता है, इसलिए मैं कई स्थितियों और समस्याओं के लिए उपयोगी सामान्य सलाह ढूंढ रहा हूं।

कुछ अन्य संबंधित प्रश्नों:

+0

Evernote में टीम लिखने कि वे अंततः बस [परित्याग WPF] (http://blog.evernote.com/2010/10/26/evernote-4-for-windows करना पड़ा स्वीकार्य प्रदर्शन प्राप्त करने के लिए -इस-यहां /)। – Crashworks

उत्तर

36
  1. कैसे आप WPF में तेजी लाने करते हैं?

    अक्सर निम्नलिखित प्रोफाइलिंग टूल में से किसी एक का उपयोग करने के बाद यह स्पष्ट है कि मेरी बाधाएं क्या हो रही हैं।

    • यदि स्मृति समस्या है तो मैं अपना डेटा वर्चुअलाइज़ करता हूं।
    • यदि समय प्रस्तुत करना समस्या है तो मैं नियंत्रण को वर्चुअलाइज़ करता हूं या जहां संभव हो वहां नियंत्रण टेम्पलेट को सरल बना देता हूं।
    • यदि प्रसंस्करण समय मुद्दा है तो मैं अपने एल्गोरिदम को बेहतर बनाने की कोशिश करता हूं या उस काम को पृष्ठभूमि धागे में ले जाता हूं और काम करते समय अपने यूई में एक थ्रोबबर दिखाता हूं।

  2. आप बाधाओं कैसे प्रोफ़ाइल करते हैं?

  3. कैसे क्या आप धीमेपन से निपटते हैं?

    प्रोफाइलिंग और परामर्श।

+9

डेटा/नियंत्रण "वर्चुअलाइज" से आपका क्या मतलब है? एक उत्कृष्ट उत्तर के लिए –

+1

(+1)।हालांकि, मुझे लगता है कि आपको 3 पर विस्तार करना चाहिए, क्योंकि आपका बाकी का जवाब इतना पेशेवर है। आपने पहले ही आंशिक रूप से इसका उत्तर दिया है 'यूआई में शो थोबबर' के साथ, और अन्य विकल्प जैसे कि प्रीलोडिंग, अनुक्रमिक प्रतिपादन, विभाजन पृष्ठ इत्यादि हैं। प्रश्न 3 एक अनुप्रयोग भावना (यानी यूएक्स) में व्यापक रूप से सबसे व्यावहारिक प्रश्न है, और इसलिए कुछ विचार के लायक है। – DevinB

+6

ओपी का 'वर्चुअलाइजिंग' द्वारा इसका अर्थ है: कई वस्तुओं (जैसे सूची नियंत्रण) के नियंत्रण के लिए, केवल स्मृति में दृश्यमान आइटम रखें, कभी भी आइटम का पूरा सेट न करें। जब आपके पास बड़ी मात्रा में आइटम होते हैं, तो यह स्मृति को बचाता है, क्योंकि आपको केवल उपयोगकर्ता को दिखाई देने वाली कई वस्तुओं को स्टोर करना होता है, पूरे सेट पर नहीं। – Dan

6

SP1 स्थापित करें ... WPF के लिए बहुत अच्छा प्रदर्शन बढ़ जाती है की लोड !!!

और पढ़ें here

यहाँ 2 enhanchements SP1 में बनाया का एक उदाहरण है: Deffered scrolling & UI Element recyceling !!!

+0

जिन लोगों को आप पहले "नोटिस" कर सकते हैं वे स्क्रॉलिंग और बाध्यकारी सुधार हैं ... यहां और पढ़ें: http://dotnet.org.za/rudi/archive/2008/05/22/scrolling-performance-in- wpf.aspx – rudigrobler

1

एनीमेशन से परहेज करने से भी कई बार मदद मिलती है। यदि आपको एनिमेशन का उपयोग करना है, तो फ़्रेमेट कम करें, इससे "महसूस" प्रदर्शन में सुधार होगा

2

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

आप यह भी सुनिश्चित करने के लिए अपने आवेदन को प्रोफाइल करना चाहेंगे कि यह वास्तव में डब्ल्यूपीएफ है जो धीमा हिस्सा है। यह संभव है कि कुछ और चीज है जो वास्तव में बाधा है।

0

क्या आप अधिक जानकारी दे सकते हैं?

मैंने केवल एक धीमी प्रदर्शन देखा जब मैं किसी सूचीदृश्य या ग्रिड की कुछ जटिलता का उपयोग करता हूं। समाधान इसे सरल बनाना है।

इसके अलावा मैंने पहली बार ऐप लोड करते समय धीमे प्रदर्शन को देखा।

HTH

1

अल्फा पारदर्शिता/बिटमैप प्रभाव हटाएं।

0

मुझे XAML को साइड-चरण करने में मदद मिलती है, और पूरे यूआई को सी # में लिखें। जब नियंत्रण बनाए जाते हैं और लोड होते हैं तो यह मुझे ठीक से नियंत्रित करने देता है। यह मुझे समझने में भी मदद करता है कि एक्सएएमएल "कवर के तहत" क्या कर रहा है।

+0

यह आपको केवल नियंत्रण की आवश्यकता पर नियंत्रण पर दानेदार नियंत्रण देता है। यह जरूरी प्रदर्शन में सुधार नहीं करता है। – jlafay

5

मैं टिप्पणियां नहीं जोड़ सकता, इसलिए मैंने इस पर एक नया जवाब पोस्ट किया है: मुझे यह वीडियो पीडीसी 0 9 से मिला है जो wpf ऐप्स को प्रोफाइल करने के बारे में कुछ विचार देता है और क्योंकि इससे मुझे बहुत मदद मिली, मैं साझा करना चाहता हूं लिंक:

Advanced WPF Application Performance Tuning and Analysis

+0

डायरेक्ट 2 डी> डब्ल्यूपीएफ :) – Puppy

संबंधित मुद्दे