سؤال

هل هناك أي حالات حيث سيكون من المنطقي استخدام نوع من نوع واحد بدلا من ضعف؟ من البحث الخاص بي، فإن العيوب المزدوجة هو أنه يتطلب مساحة أكبر، والتي ليست مشكلة لمعظم التطبيقات. في هذه الحالة، يجب أن تكون جميع أرقام النقطة العائمة؟

معلومات أساسية صغيرة: أنا أعمل مع تطبيق يتعامل مع الكثير من البيانات حول الإحداثيات والمواد الكيميائية. لاحظ عدد قليل من العملاء أنه عند استيراد جدول بيانات البيانات، يتم تقريب بعض القيم ذات الدقة عالية الدقة بدقة واحدة.

هل كانت مفيدة؟

المحلول

على معظم تطبيقات سطح المكتب، نعم.

على الرغم من أنه إذا كان لديك مجموعة كبيرة منهم، فقد يكون حجم ذلك كبيرا بدرجة كافية لتكون جديرا بالاهتمام إذا لم تكن بحاجة إلى الدقة.

خاصة بالنظر إلى أن جميع أجهزة الكمبيوتر المكتبية المستهلكين إلى حد كبير لديها حساب حسابي مزدوج الدقة في الأجهزة.

نصائح أخرى

من هذه ونت المادة

عرض نوع البيانات

أكثر أنواع البيانات كفاءة هي تلك التي تستخدم عرض البيانات الأصلية لمنصة وقت التشغيل. على المنصات الحالية، فإن عرض البيانات هو 32 بت، لكل من الكمبيوتر ونظام التشغيل.

وبالتالي، فإن عدد صحيح هو حاليا نوع البيانات الأكثر كفاءة في Visual Basic .NET. أفضل ما هو طويل، قصيرة، قصيرة، بايت، في هذا الترتيب من الكفاءة. يمكنك تحسين أداء القصص القصيرة والبايت عن طريق إيقاف تشغيل فحص تجاوز عدد صحيح، على سبيل المثال عن طريق تعيين خاصية RepugeInteGregecks، ولكن هذا يتحمل مخاطر الحسابات غير الصحيحة بسبب التدفقات التي لم يتم اكتشافها. لا يمكنك تبديل هذا التدقيق وإيقاف تشغيله أثناء وقت التشغيل؛ يمكنك فقط ضبط قيمتها للحصول على المبنى التالي للتطبيق الخاص بك.

إذا كنت بحاجة إلى قيم كسور، فإن الخيار الأفضل مزدوج، لأن المعالجات العائمة من المنصات الحالية تؤدي جميع العمليات في الدقة المزدوجة. أفضل ما هو واحد هو واحد وعشري، في هذا الترتيب من الكفاءة.

كما يقول مارك في تعليقه، يمكن أن تكون الفضاء مشكلة في أنظمة القيود بالذاكرة. قد ترغب أيضا في فهرسة أو فرز قائمة، ولماذا تفعل ذلك على الزوجي إذا كنت تستطيع تخزين قيمك في الفردي؟

في بعض الأجهزة، قد تستغرق الحساب الذي تنطوي على القيم المزدوجة أطول من تلك التي تنطوي على قيم مفردة، ولكن تحتوي معظم FPUs الأخيرة على نوع بيانات أصلية (على سبيل المثال، قيم النقطة العائمة الموسعة 80 بت ل X86) والتي سيتم استخدامها داخليا للحسابات بغض النظر عن ما نوع بيانات الذاكرة الذي تستخدمه. لذلك من القول أن "حسابات FPU ستكون أسرع مع دقة واحدة" هي عموما ليس سبب لاستخدام الدقة الفردية على معظم الأجهزة الحديثة اليوم.

ومع ذلك، بالإضافة إلى "استخدامات أقل الذاكرة" وضعت في الإجابات الأخرى، هناك سبب عملي للغاية عندما يتعلق الأمر بتعليمات SIMD ناقلات مثل SSE و AltiVEC - دقة واحدة مثبت أن تكون مرتين بأسرع الدقة المزدوجة ، نظرا لأن التعليمات تعمل على ناقلات الحجم الثابت، ويمكنك الاشياء ضعف عدد القيم الدقيقة الواحدة في متجه واحد، مع وقت المعالجة عادة ما يظل نفسه.

على سبيل المثال، مع وحدة ناقلات 128 بت قادرة على معالجة مضاعفات ناقلات في دورتين على مدار الساعة، يمكنك الحصول على إنتاجية من مضاعفات دقة واحدة لكل ساعة، مقابل دقة مزدوجة واحدة، لأنك تستطيع 4 الفردي في متجه، مقابل اثنين من الزوجي وبعد

يحدث تأثير مماثل مع عرض النطاق الترددي للذاكرة، وليس من المحدد لمعالجة ناقلات - إذا كان لديك صفائف كبيرة من الزوجي، فلن يأخذوا فقط ضعف المساحة، ولكن قد يستغرق ما يصل إلى ضعف ما يدورون في هذه الحالة أن خوارزمك هي عرض النطاق الترددي المقيد (الذي يتزايد على نحو متزايد منح الأحجام المتزايدة وتناقص وحدات معالجة ناقلات ناقلات).

الزوجي تأخذ مساحة أكبر ولكن الدقة الإضافية قد لا تكون ضرورية. لقد قمت بالكثير من البرمجة في العالم العلمي حيث يكون الحساب الفاصلة العائمة شائعة جدا وجد أنه في كثير من الأحيان يمكنك القيام بالحسابات في دقة مزدوجة أو أعلى ولكن تخزين النتائج كفردي دون تأثير مريض.

ضع في اعتبارك أنه بمجرد امتصاص الأرقام في FPU، يتم توسيعها إلى دقة عالية جدا على أي حال. ومع ذلك، سيكون من الأفضل تجربة كل ما تفعله في كلا الصقارات ومعرفة ما إذا كانت النتائج قابلة للمقارنة.

لسوء الحظ، لا يزال الحوسبة علما تجريبيا.

إذا كنت ترميز OpenGL، فمن الطبيعي استخدام Glsingle (مثل واحد) بدلا من Gldible. في جميع الظروف تقريبا، يكون الدقة الواحدة أكثر من كافية لمعظم تطبيقات الرسومات وينبغي أن تكون أسرع - على الرغم من أنني أعترف أنني لست متأكدا من ذلك على أحدث جيل من GPUs.

الاقتباس المفضل لدي حول هذا هو أن الدقة الفردية كانت كافية للانتقال إلى القمر والظهر، لذلك في الممارسة العملية، من غير المعتاد أن تسبب مشكلة حقيقية. ومع ذلك، فإنها قلت في معظم الظروف، حيث وصلت إلى هذه الأيام المزدوجة لأن التخزين رخيص، ومن المرجح أن يكون هناك أي ثنائي غريب في القضايا العشرية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top