الفئة MathF
من الطبعة القادمة من
كتاب: من الصفر إلى الاحتراف: برمجة إطار العمل.. تصدر قريبا بإذن الله:
تعرفون طبعا الفئة Math التي تحتوي على الدوال الرياضية.. هذه الفئة تتعامل مع أعداد
مزدوجة الدقة العشرية Double،
وهذا مناسب للحسابات العلمية الدقيقة، لكن ثمنه هو بطء التنفيذ.. لهذا أضيف إلى
دوت نت مؤخرا فئة جديدة اسمها MathF.. الحرف F هو اختصار Float وهو الاسم الآخر للأعداد مفردة الدقة العشرية Single في عائلة لغات C.. الفئة MathF نسخة طبق الأصل من الفئة Math لكنها تتعامل مع أعداد مفردة، وهذا يجعلها أسرع في التنفيذ،
مع خسارة بعض الدقة العشرية، التي لا تهم كثيرا في التطبيقات التجارية وتطبيقات
الألعاب والرسوم وغيرها.
المشكلة حاليا أن هذه الفئة لا تظهر
في مشاريع إطار العمل، وإنما تظهر في مشاريع .Net core 2 فقط.. لو شئت تجربتها، افتح أي
مشروع دوت نت كور مثل مشروع Console Application وجرب الكود.. ستجد أن استخدام MathF يوفر تقريبا نصف الوقت!
C#:
var sp
= new System.Diagnostics.Stopwatch();
const int
Count = 100000;
sp.Restart();
float f
= 0F;
for (var i
= 0; i <= Count; i++)
f = MathF.Cos(0.13334F);
sp.Stop();
var t
= sp.Elapsed.TotalMilliseconds;
Console.WriteLine($"Mathf
time = {t}");
sp.Restart();
double d
= 0;
for (var i
= 0; i <= Count; i++)
d = Math.Cos(0.13334);
sp.Stop();
t =
sp.Elapsed.TotalMilliseconds;
Console.WriteLine($"Math
time = {t}");
Console.ReadLine();
VB.NET:
Dim sp
As New Stopwatch
Const
Count = 100000
sp.Restart()
Dim f As Single
For i
= 0 To Count
f = MathF.Cos(0.13334F)
Next
sp.Stop()
Dim t
= sp.Elapsed.TotalMilliseconds
Console.WriteLine($"Mathf
time = {t}")
sp.Restart()
Dim d As Double
For i
= 0 To Count
d = Math.Cos(0.13334)
Next
sp.Stop()
t = sp.Elapsed.TotalMilliseconds
Console.WriteLine($"Math
time = {t}")
Console.ReadLine()
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.