मैं संख्यात्मक एल्गोरिदम के सेट के लिए जावा में एक एपीआई डिज़ाइन कर रहा हूं जो युगल के सरणी पर कार्य करता है (वास्तविक समय के वित्तीय आंकड़ों के लिए ऐसा होता है)। प्रदर्शन कारणों से एपीआई को आदिम सरणी के साथ काम करना है, इसलिए List<Double>
और ऐसे विकल्प एक विकल्प नहीं हैं।एरे पर काम करने वाले कार्यों के लिए एपीआई डिज़ाइन
एक सामान्य उपयोग केस एक एल्गोरिदम ऑब्जेक्ट हो सकता है जो दो इनपुट एरे लेता है, और आउटपुट-सरणी देता है जिसमें दो इनपुट से गणना की गई परिणाम होती है।
मैं, कैसे सरणी पैरामीटर एपीआई में उपयोग किया जाता है के लिए लगातार सम्मेलनों की स्थापना के लिए विशेष रूप से करना चाहते हैं:
- ताकि उपयोगकर्ताओं को एक बड़ा सरणी के कुछ हिस्सों पर कार्य कर सकते हैं मैं सभी कार्यों के साथ एक ऑफसेट शामिल करना चाहिए उदाहरण के लिए
someFunction(double[] input, int inputOffset, int length)
- यदि किसी फ़ंक्शन को इनपुट और आउटपुट पैरामीटर दोनों की आवश्यकता होती है, तो इनपुट या आउटपुट पैरामीटर सूची में पहले आना चाहिए?
- क्या कॉलर आउटपुट सरणी आवंटित कर सकता है और उसे पैरामीटर के रूप में पास कर सकता है (जिसे संभावित रूप से फिर से उपयोग किया जा सकता है), या फ़ंक्शन को हर बार आउटपुट सरणी बनाने और वापस करने के लिए क्या करना चाहिए?
उद्देश्यों एक दक्षता, एपीआई उपयोगकर्ताओं और स्थिरता दोनों एपीआई के भीतर और स्थापित परंपराओं से के लिए सादगी की एक संतुलन हासिल करने हैं।
स्पष्ट रूप से बहुत सारे विकल्प हैं, तो सबसे अच्छा समग्र एपीआई डिज़ाइन क्या है?
मुझे लगता है कि वह जावा में लिख रहा है, इसलिए "स्टैक पर" टिप्पणी उस संदर्भ में कोई समझ नहीं लेती है। – user949300
नहीं, हॉटस्पॉट छोटी वस्तुओं को आवंटित करता है जो ढेर पर नहीं बचते हैं। –
लेकिन चूंकि ये सरणी परिणाम के रूप में लौटा दी जाती हैं, इसलिए वे निश्चित रूप से बच जाते हैं। – user949300