मुझे एक एक्स/वाई चारों ओर पास करने की आवश्यकता है। मैं सिर्फ java.awt.Point का उपयोग कर रहा था। मैं इसे ऐप की प्रकृति पर विचार करने के लिए बहुत कुछ करता हूं, लेकिन सामान्य सरणी के बाद धीमा हो जाता है। मैंने अपना खुद का "फास्टपॉइंट" बनाने की भी कोशिश की जो कि एक इंट एक्स/वाई और बहुत ही सरल वर्ग कन्स्ट्रक्टर है, जो वास्तव में भी धीमी है।अंक धीमा क्यों हैं
समय मिलसेकंड में है।
java.awt.Point: 10,374
FastPoint: 10032
सरणी: 1210
public class FastPoint {
public int x;
public int y;
public FastPoint(int x, int y) {
this.x = x;
this.y = y;
}
}
Jvisualvm प्वाइंट (या तो AWT या अपने खुद के) सरल पूर्णांक [] सरणी की तुलना में स्मृति के टन का उपयोग कर रहे कहते हैं ।
मुझे लगता है कि उम, मूल प्रकार के बजाय ऑब्जेक्ट बनाने से बस ऊपर की ओर है? इस प्वाइंट क्लास को ट्विक या ऑप्टिमाइज़ करने का कोई तरीका? मैं पहले से ही मूल int arrays (जो अब बहुत तेज है) पर स्विच कर चुका है, लेकिन यह समझने की कोशिश कर रहा है कि यह धीमा क्यों है और यदि कुछ भी है तो मैं इसके बारे में कुछ कर सकता हूं?
टेस्ट कोड:
for (int i = 0; i < maxRuns; i++) {
point = new Point(i,i);
}
for (int i = 0; i < maxRuns; i++) {
a[0] = i; a[1] = i;
}
मुझे विश्वास नहीं है कि ऑब्जेक्ट्स के बजाय सरणी का उपयोग करने से 900% की वृद्धि होगी। एमएस में समय -> लेकिन क्या करने के लिए? –
for (int i = 0; i < maxRuns; i++) { point = new Point(i,i); }
for (int i = 0; i < maxRuns; i++) { a[0] = i; a[1] = i; }
– dimeभी, आपके सरणी संस्करण में, आप ** ** सरणी ** तत्काल नहीं कर रहे हैं। ऑब्जेक्ट/सरणी बनाने और समान सरणी में * तत्व * तत्वों को निर्दिष्ट करने के बीच अलग-अलग लागत * विशाल * है। –