2015-06-25 7 views
9

अंतिम सेमेस्टर हमें स्कूल में पाठ्यक्रम के लिए एक रेट्रेटर विकसित करना पड़ा। स्कूल किया जा रहा है, मैंने इसके साथ थोड़ा सा झुकाव करने की कोशिश की।जावा रेयट्रैसिंग फ्लोट बनाम डबल

मैं देखना चाहता था कि क्या बदल जाएगा यदि मैंने सभी फ्लोटिंग पॉइंट गणनाओं को डबल से फ्लोट (सभी गणनाओं को युगल के साथ किया जा रहा है) में बदल दिया। इसलिए मैंने प्रत्येक वैरिएबल को फ्लोट टाइप करने के लिए बदल दिया, और बस प्रत्येक डबल को गणित विधियों से फ़्लोट करने के लिए वापस कर दिया। कुछ दृश्यों पर मेरे रेट्रेटर का परीक्षण करने से एक सुंदर सभ्य प्रदर्शन में वृद्धि हुई।

वेब के चारों ओर खोजना मुझे विभिन्न कारणों से पता चला कि फ्लोट तेजी से क्यों हो सकता है, लेकिन कुछ यह भी कह रहे हैं कि डबल 64-बिट वातावरण में तेज, या तेज भी हो सकता है। बात यह है कि, मैं 64-बिट वातावरण और जेवीएम में चल रहा हूं। इस बढ़ते प्रदर्शन का कारण क्या होगा?

अब, मैं पीबीआरटी पुस्तक पढ़ रहा हूं और इसके बाद स्क्रैचर से एक रेट्रैसर को फिर से लिखने की योजना बना रहा हूं। सभी फ्लोटिंग पॉइंट गणनाओं के लिए फ्लोट चुनने से कोई समस्या हो सकती है? मैंने अपने परीक्षणों के दौरान किसी को भी ध्यान नहीं दिया, लेकिन शायद कुछ दृश्यों के लिए कम परिशुद्धता हो सकती है (चौराहे परीक्षण ऐसा लगता है जैसे यह एक संभावित समस्या पैदा कर सकता है)? या शायद एक व्यापारिक, महत्वपूर्ण परीक्षणों के लिए डबल का उपयोग करना और कम महत्वपूर्ण गणना के लिए तैरना? कास्टिंग से छुटकारा पाने के लिए मुझे एक और गणित पुस्तकालय का उपयोग करना होगा, क्या मैं फ्लोट रास्ता जा रहा हूं।

+0

मेरा मानना ​​है कि 'डबल डी = 1 डी' दो निर्देश हैं, जबकि' फ्लोट एफ = 1 एफ' एक है। 64 बिट मशीनों पर भी। एक 64 बिट जेवीएम के साथ चारों ओर मेस। – jn1kk

+0

"मैं 64-बिट वातावरण में चल रहा हूं" एक 64-बिट ओएस 64-बिट वातावरण के रूप में नहीं गिना जाता है। आपका कंपाइलर और अन्य टूल्स (जैसे कि जावा आप जावा कर रहे हैं) को भी 64-बिट होना चाहिए। –

+1

संभावित डुप्लिकेट [क्या फ्लोट डबल से धीमा है? 64 बिट प्रोग्राम 32 बिट प्रोग्राम से तेज़ी से चलता है?] (Http://stackoverflow.com/questions/5738448/is-float-slower-than-double-does-64-bit-program-run-faster-than-32 -bit-program) –

उत्तर

6

वहाँ काफी नाव और डबल के बीच कोई अंतर जब यह, गणना की गति के लिए आता है के रूप में अब तक डेस्कटॉप प्रोसेसर के रूप में मंच हो रहा है। अंतर केवल स्मृति स्मृति बैंडविड्थ आवश्यकताओं में से आ सकता है क्योंकि युगल को दो गुना अधिक स्थान की आवश्यकता होती है।

जीपीयू आधारित गणनाओं के लिए यह अलग है, जो फ्लोट के लिए अधिक उपयुक्त हैं और उदा। डबल के लिए एनवीडिया जीपीयू का ब्रेक काफी नीचे है।

मैं मिश्रित दृष्टिकोण के साथ जाऊंगा; फ़्लोट परिशुद्धता वाले बहुभुज जैसे डेटा स्टोर करें, लेकिन सभी गणनाओं को डबल में करें। छोटी स्मृति पदचिह्न, उच्च परिशुद्धता - जीत-जीत।

+0

आपके उत्तर के लिए धन्यवाद! यह एक अच्छा व्यापारिक प्रतीत होता है, कुछ मैं कोशिश करूंगा। – Koekje

संबंधित मुद्दे