2009-12-12 14 views
9

मैं WPF का उपयोग कर एक एप्लिकेशन विकसित कर रहा हूं। ऐप पूर्ण स्क्रीन चलाता है, और मुझे मॉनीटर रिज़ॉल्यूशन के मामले में अच्छी तरह से आकार बदलने की आवश्यकता है। ग्राफ़िक डिजाइनर ने UI बटन, पृष्ठभूमि इत्यादि के लिए सुंदर छवियों को डिज़ाइन किया है। इलस्ट्रेटर प्लग-इन का उपयोग करके, सभी छवियों को xaml फ़ाइलों में परिवर्तित कर दिया गया है। मैंने इन सभी छवियों को एप्लिकेशन में जोड़ा है, और वे बहुत अच्छे लगते हैं। मैं Grid लेआउट का भी उपयोग कर रहा हूं ताकि स्क्रीन लेआउट को बनाए रखने के दौरान स्क्रीन का आकार बदल सके। यह सब वांछित के रूप में प्रदर्शित होता है, एक अलग संकल्प पर चलाने पर कुछ भी नहीं दिखता है। हालांकि, स्क्रीन संक्रमण और यूआई इंटरैक्शन धीमा है।क्या WPF कारण मेरा एप्लिकेशन धीमा है?

मुझे आश्चर्य है, क्या यह ग्राफिक्स के भारी उपयोग के कारण है? क्या मैं बहुत सारे Grid लेआउट का उपयोग कर रहा हूं? लेकिन, मुझे Grid एस की आवश्यकता है ताकि मैं संकल्प स्वतंत्रता प्राप्त कर सकूं।

एप्लिकेशन मेरी विकास मशीन पर ठीक चलता है, लेकिन कम प्रदर्शन क्षमताओं वाले मशीन पर बहुत ही धीमी गति से चल रहा है। हाँ, यह उम्मीद की जा रही है, लेकिन वह डिग्री नहीं जो मैं देख रहा हूं। मेरा नियोक्ता जोर देता है कि एप्लिकेशन इन निचले प्रदर्शन मशीनों पर आसानी से चलता है।

मैं आवेदन में से कुछ की रूपरेखा किया है और यह लगता है जो सबसे समय लगता प्रदर्शन सामान है कि (हालांकि मुझे यकीन है कि नहीं मैं पूरी तरह से समझ कैसे प्रभावी रूप से एक प्रोफाइलर उपयोग करने के लिए कर रहा हूँ)।

यदि यह डब्ल्यूपीएफ है जो मंदी का कारण बन रहा है, तो मैं इसे सुधारने के लिए क्या कर सकता हूं?

+1

असली जवाब लिखने के लिए इसके बारे में पर्याप्त जानकारी नहीं है, लेकिन मैं illsutrator-to-xaml प्लगइन के आउटपुट में ध्यान से देखता हूं। कम से कम देखें कि आपका ऐप प्लेसहोल्डर ग्राफ़िकल तत्वों (उदाहरण के लिए, एक खाली ग्रिड) के साथ कैसा व्यवहार करता है। – Egor

उत्तर

10

आप ड्रिल कर सकते हैं कि कौन सी डब्ल्यूपीएफ गतिविधियां Performance Profiling Tools for WPF का उपयोग कर समय का उपयोग कर रही हैं। एक भारी ग्राफिकल लोड को मानते हुए मंदी का कारण बनता है, इससे आपको कुछ मदद मिलनी चाहिए, जिसे सरलीकृत करने की आवश्यकता हो सकती है (जैसे लेआउट) या हटाया गया है (उदाहरण के लिए बिटमैप प्रभाव (ये क्लासिक परफ हत्यारा हैं, हालांकि मैं पूर्वाग्रह नहीं करना चाहता आपका प्रोफाइलिंग!))।

6

यदि यह WPF कि मंदी

नहीं

शायद खड़ी कर रहा है है;)

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

+0

वीडियो लिंक अब काम नहीं करता है। –

+1

यह उस वीडियो के लिए वर्तमान स्थान प्रतीत होता है: https://channel9.msdn.com/Events/PDC/PDC09/CL10 – TripleAntigen

2

WPF प्रदर्शन मशीन/वीडियो में वीडियो कार्ड की गुणवत्ता पर निर्भर करता है जो प्रोसेसर/मेमोरी है। खराब वीडियो कार्ड = खराब WPF प्रदर्शन।

1

खैर, यह है एक लंबे शॉट: जब मैं VSTS 2010 स्थापित (और यह WPF का उपयोग करता है) यह पर्याप्त CPU/स्मृति के साथ एक Windows 2008 सर्वर पर बहुत धीमी थी, और एक अधिक में बहुत तेजी मामूली नोटबुक। हम हार्डवेयर त्वरण को अक्षम करने में कामयाब रहे और यह उस मशीन में विशेष रूप से तेज़ हो गया। पारदर्शी PNG छवियों में कनवर्ट करें बटन के अपने XAML वेक्टर चित्र Visual Studio 2010 Beta 2 editor performance fix running on a virtual machine

+0

दिलचस्प, कभी भी अक्षम नहीं किया गया है WWAcceleration पहले WPF को गति देने के लिए उपयोग किया जाता है! – itowlson

+0

जिसने मुझे भी सोचा .. लेकिन वीएस -2010 पर काम किया, मैं कसम खाता हूं =) http://stackoverflow.com/questions/1743525/can-i-and-how-do-i-target-net-4-with- बनाम 2008/1743556 # 1743556 –

4
  1. :

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

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

  3. एकल बच्चे के साथ पैनल से बचें। विजुअल पदानुक्रम को कम करने का प्रयास करें।

  4. बटन और ऐसे छोटे तत्वों के लिए निश्चित आकार का अधिक उपयोग करें, यदि आप निश्चित आकार के बच्चों को निर्दिष्ट करते हैं, तो पैनलों के लिए लेआउट प्रोसेसिंग करना आसान हो जाता है।

+3

पीएनजी छवियां अच्छी तरह से आकार बदलती नहीं हैं, इसलिए मैं वैक्टरों के साथ गया हूं। –

+2

प्लस, मैं एक ऐप कैसे विकसित करूं जो स्क्रीन रिज़ॉल्यूशन को फिट करने के लिए लेआउट को समायोजित करेगा जब तक कि मैं ग्रिड पर भरोसा नहीं करता? –

+0

सभी छवियों को पीएनजी में नहीं होना चाहिए, उदाहरण के लिए बटन के सभी आइकन या आईई के बैक/फॉरवर्ड बटन पर एक जैसे, वे हमेशा आकार में रहते हैं, फिर भी ऐसे बटन पीएनजी में परिवर्तित किए जा सकते हैं। आप ग्रिड के बजाय डॉकपैनल का उपयोग कर सकते हैं या "ऑटो" के बजाय सापेक्ष कॉलम/पंक्ति आकार का उपयोग कर सकते हैं। यदि आप अपने ऐप की स्क्रीन थोड़ी सी दिखा सकते हैं, तो मैं कुछ बेहतर कदम सुझा सकता हूं। –

0

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

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

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

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