पर कुशलता से बहुत से अंक के साथ ड्राइंग चार्ट IOS पर कुशलतापूर्वक बहुत सारे बिंदुओं (10 000 तक) के साथ एक लाइन चार्ट खींचने का एक तरीका ढूंढ रहा हूं। ग्राफ को रीयल-टाइम डेटा मिलता है और उसे एक बार कई बार अपडेट करने की आवश्यकता होती है। मैं ग्राफ को कुशलता से आकर्षित करने का एक तरीका समझने की कोशिश कर रहा हूं, इसलिए यह CPU को अधिकतम नहीं करता है और ड्राइंग करते समय मुख्य थ्रेड को अवरुद्ध करता है।आईओएस
मैं वर्तमान में लाइन चार्ट के लिए UIBezierPath
बना रहा हूं, पृष्ठभूमि थ्रेड में, सभी बिंदु जोड़कर और इसे कैलियर में खींच रहा हूं (जिसमें एसिंक्रोनस ड्राइंग सक्षम है)। यह बहुत तेज़ नहीं है, सीपीयू को अधिकतम करता है और ड्राइंग इतनी धीमी है कि यूआई लगी हो जाती है। मैं वास्तविक समय डेटा की साजिश कर रहा हूं, और सिद्धांत रूप में मैं हर बार उसी UIBezierPath
का पुन: उपयोग कर सकता हूं और केवल नए अंक जोड़ सकता हूं, हालांकि पुराने मूल्यों को थोड़ी देर बाद त्याग दिया जाता है, जिसका अर्थ है कि हटाए गए मानों के बिंदु को बेजियर पथ से हटा देना होगा , जो संभव नहीं है।
मुझे आईओएस पर बड़े डेटा सेटों को कुशल बनाने पर कुछ भी नहीं मिला है, लेकिन मुझे आशा है कि प्रदर्शन बढ़ाने के लिए जीपीयू का उपयोग करने के तरीके हैं।
क्या आपको सभी 10k अंक आकर्षित करना है? यहां तक कि एक आईपैड स्क्रीन पर, जो अत्यधिक अत्यधिक लगता है ... (क्षैतिज पिक्सल से अधिक अंक)। क्या आपने डेटा को छोटे सेट में औसत मान लिया है? – Hamish
@ originaluser2 मैं पूरी तरह से सहमत हूं। मैं कुछ क्लाइंट काम कर रहा हूं और अभी तक इन कई बिंदुओं को चित्रित करने के विचार से बात करने में सक्षम नहीं हूं। – JonasG
अच्छी तरह से यदि आप उन्हें मनाने में सक्षम हैं, औसत आपकी सबसे अच्छी शर्त है! मुझे संदेह है कि आप मेटल/ओपन जीएल में पूर्ण किए बिना जीपीयू का अधिक लाभ उठाने में सक्षम होंगे। मुझे पूरा यकीन है कि 'UIBezierPath' मुख्य रूप से कोर ग्राफिक्स का उपयोग हुड के नीचे करता है, और यह सब सीपीयू पर चलता है। – Hamish