2012-01-19 11 views
5

पर json.net प्रदर्शन मैं अपने एएसपी.नेट एमवीसी ऐप को प्रोफाइल कर रहा हूं और जब मैंने आईआईएस पर अपना स्थानीय संस्करण मारा और मैंने देखा है कि लगभग 77 केबी की ऑब्जेक्ट को deserializing लगभग 100ms लेता है, तो क्या यह उम्मीद है?77kb json string

इसके अलावा सीपीयू प्रोफाइलिंग करते समय अधिकतम आउटपुट लगता है, क्या यह बहुत तीव्र है, या मुझे कहीं और दिखना चाहिए?

आपकी सहायता के लिए धन्यवाद।

+0

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

+0

मैंने वीएस प्रोफाइलर का उपयोग करके कुछ नमूनाकरण किया है और नमूनाकरण की सबसे बड़ी मात्रा 'जेसनकॉन्टर.डिसरियलइज ऑब्जेक्ट' – Mark

उत्तर

2

ऑब्जेक्ट की जटिलता आमतौर पर deserializing के संबंध में एक प्रमुख भूमिका निभाती है। ऑब्जेक्ट्स जिनमें एक रिकर्सिव पैटर्न में बाल ऑब्जेक्ट होते हैं, सीपीयू और मेमोरी को सही तरीके से पार्स करने के लिए खाएंगे।

एक साधारण नाम: मूल्य का नाम एक और नक्शा (ऑब्जेक्ट) नाम: वैल्यू नक्शा अधिक जटिल हो सकता है। यदि इस प्रकार का रिकर्सन चल रहा है, तो आप अपने JSON को denormalizing (नाम: [आदिम] मान) बनाना चाहते हैं, इसलिए सिस्टम को पार्स करना आसान है।

एमवीसी (rdbms डेटा) के संबंध में denormalizing थोड़ा मुश्किल हो सकता है। कई मामलों में कई से अधिक संबंधों को झुकाव संभव नहीं है।

आप JSON.net को अंतर्निहित जावास्क्रिप्टसेरियलाइज़र से तुलना करने का प्रयास कर सकते हैं और देख सकते हैं कि आप कोई सुधार कर सकते हैं या नहीं।

0

एक निश्चित बिंदु पर, वस्तुओं deserialise के लिए बोझिल हो जाते हैं, यह देखते हुए कि कई serialization ढांचे, JSON.NET, लीवरेज प्रतिबिंब शामिल है। साथ ही, जब कोई ऑब्जेक्ट आकार में 85 केबी तक पहुंच जाता है, तो इसे तुरंत कचरा कलेक्टर द्वारा बड़े ऑब्जेक्ट हीप पर धकेल दिया जाता है, जिसका प्रदर्शन प्रभाव पड़ता है।

मैं JSON# का उपयोग करने का सुझाव देता हूं - एक प्रदर्शन सैक्टेंट्रिक .NET JSON पार्सर प्रदर्शन में सुधार करने के लिए, और स्मृति बाधाओं से बचने के लिए।