سؤال

لكثافة أنا تفكر في استخدام نقطة ثابتة بدلا من النقطة العائمة عدد الطحن. بالطبع سوف يهم كم بايت نوع نقطة ثابتة في حجمها، على ما CPU انها سوف تكون قيد التشغيل على، ما اذا كان يمكنني استخدام (انتل) في MMX أو SSE أو أي أشياء جديدة تأتي ...

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

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

المحلول

وانها لا تزال يستحق كل هذا العناء. النقطة العائمة أسرع مما كانت عليه في الماضي، ولكن نقطة ثابتة أيضا. والثابتة لا تزال السبيل الوحيد للذهاب إذا كنت تهتم الدقة أبعد من ذلك يكفله IEEE 754.

نصائح أخرى

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

وسبب وجيه آخر لاستخدام عشري ثابت هو أن التقريب هو أبسط من ذلك بكثير ويمكن التنبؤ به. معظم البرامج المالية يستخدم نقطة ثابتة العشرية الدقة التعسفي مع نصف حتى التقريب لتمثيل المال.

ولها ما يقرب من ALWAYS أسرع لاستخدام نقطة ثابتة (تجربة x86 و بنتيوم، 68K وARM). يمكن، رغم ذلك، تعتمد أيضا على نوع التطبيق. للبرمجة الرسومات (واحد من بلدي الاستخدامات الرئيسية للنقطة ثابتة) لقد كنت قادرا على تحسين التعليمات البرمجية باستخدام الجداول جيب التمام التي سبق إنشاؤها، تسجيل الجداول الخ ولكن أيضا أثبتت أيضا العمليات الحسابية الأساسية بشكل أسرع.

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

استخدم نقطة ثابتة عندما لا يدعم الأجهزة العائمة أو تنفيذ الأجهزة تمتص.

وحذار أيضا عند اتخاذ الطبقات لذلك. شيء تعتقد أنها ستكون سريعة يمكن أن يؤدي في النهاية إلى أن يكون الكلب عندما يتعلق الأمر التنميط بسبب (الامم المتحدة) نسخ اللازمة من الطبقات. هذا هو سؤال آخر لوقت آخر ولكن.

<القوي> وهناك سبب آخر لاستخدام نقطة ثابتة هي أن أجهزة ARM، مثل الهواتف النقالة وأقراص، وعدم FPU (على الأقل الكثير منهم).

لتطوير التطبيقات في الوقت الحقيقي فمن المنطقي لتحسين وظائف باستخدام الحساب نقطة ثابتة. هناك تطبيقات FFTs (تحويل فورييه السريع)، مهم جدا للرسومات، التي تبني التحسينات على كفاءة على الاعتماد على النقطة العائمة حسابي.

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

وIMHO، نقطة ثابتة غير الضرورية فقط عندما كنت تستخدم DSP دون دعم الأجهزة لعملية نقطة عائمة.

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