के लिए सबसे तेज़ भाषा मैं एक विश्लेषणात्मक मॉडल के निर्माण के लिए सबसे अच्छी प्रोग्रामिंग भाषा का पता लगाने की कोशिश कर रहा हूं। प्राथमिक विचार गति है जिस पर यह लूप के लिए चलाएगा।फॉर लूप
कुछ विस्तार:
- मॉडल एक सरणी से तत्व का एक सेट पर (, ~ 30 प्रविष्टि प्रति 12 चक्र से अधिक) कई प्रदर्शन करने के लिए आपरेशन की जरूरत है - वहाँ ~ 300k पंक्तियाँ, और ~ 150 स्तंभ हैं सरणी में इनमें से अधिकतर ऑपरेशन प्रकृति में तार्किक हैं, उदाहरण के लिए, यदि स्थान (i) = 1, तो j (i) = 2.
- मैंने ऑक्टेव का उपयोग करके इस मॉडल का एक पुराना संस्करण बनाया है - इसे चलाने के लिए ~ 55 अमेज़ॅन ईसी 2 m2.xlarge इंस्टेंस पर घंटे (और यह ~ 10 जीबी मेमोरी का उपयोग करता है, लेकिन मैं इसमें अधिक मेमोरी फेंकने के लिए पूरी तरह से खुश हूं)। ऑक्टेव/मैटलैब तत्ववार तार्किक परिचालन नहीं करेगा, इसलिए लूपों की एक बड़ी संख्या की आवश्यकता है - मुझे अपेक्षाकृत निश्चित है कि मैंने जितना संभव हो सदिश किया है - जो लूप शेष हैं। मुझे इस कोड के साथ काम करने के लिए ऑक्टो-मल्टीकोर मिल गया है, जो कुछ सुधार करता है (जब मैं इसे 8 ईसी 2 कोर पर चलाता हूं तो 30% की गति में कमी आती है), लेकिन फ़ाइल लॉकिंग आदि के साथ अस्थिर हो जाती है। + मैं हूं वास्तव में रन-टाइम में एक कदम परिवर्तन की तलाश में - मुझे पता है कि वास्तव में मैटलैब का उपयोग करने से मुझे कुछ बेंचमार्क देखने से 50% सुधार मिल सकता है, लेकिन यह लागत-निषिद्ध है। इसे शुरू करते समय मूल योजना वास्तव में इसके साथ एक मोंटे कार्लो चलाने के लिए थी, लेकिन 55 घंटों में एक रन, यह पूरी तरह अव्यवहारिक है।
- इसका अगला संस्करण ग्राउंड अप से एक पूर्ण पुनर्निर्माण होगा (आईपी कारणों से मैं कुछ और नहीं कर पाऊंगा), इसलिए मैं किसी भी प्रोग्रामिंग भाषा के लिए पूरी तरह से खुला हूं। मैं ऑक्टेव/मैटलैब से सबसे ज्यादा परिचित हूं, लेकिन आर, सी, सी ++, जावा में डब किया है। यदि समाधान में डेटाबेस को डेटा संग्रहीत करना शामिल है तो मैं भी कुशल w/SQL हूं। मैं इसके लिए कोई भी भाषा सीखूंगा - ये जटिल कार्यक्षमता नहीं हैं जिसे हम ढूंढ रहे हैं, अन्य कार्यक्रमों के साथ इंटरफेसिंग नहीं, आदि, इसलिए वक्र सीखने के बारे में बहुत चिंतित नहीं हैं।
तो वह सब कहा साथ, क्या सबसे तेजी से प्रोग्रामिंग भाषा विशेष रूप से छोरों के लिए के लिए है? एसओ और Google, फोरट्रान और सी बबल की खोज से शीर्ष पर, लेकिन एक या दूसरे में गोता लगाने से पहले कुछ और सलाह की तलाश है।
धन्यवाद!
यह एक बेवकूफ सवाल हो सकता है लेकिन अन्य पंक्तियों की गणना के एक पंक्ति प्रभाव परिणामों पर किए गए संचालन क्या करते हैं? – R0MANARMY
कुछ स्थानों पर, वे करते हैं, लेकिन सबसे बड़ा समय सिंक फ़ंक्शन (वर्तमान में ~ 80% रन टाइम शामिल है) नहीं करता है। – Noah
जैसा कि कुछ अन्य ने सुझाव दिया है कि मैं फोरट्रान के साथ जाऊंगा।जहां संभव हो, मौलिक कार्यों का उपयोग करें, सब कुछ के लिए और डीओ जो पूरी तरह से सरणी के हिस्सों पर नहीं किया जा सकता है। क्या संचालन के कुछ हिस्सों को समांतर किया जा सकता है? साथ ही, सोचें कि कैसे फोर्ट्रान स्मृति में डेटा स्टोर करता है। इंडेक्स और ऑपरेशन ऑर्डर की सावधानीपूर्वक पसंद कुछ गति सुधार भी ला सकती है। – Rook