پنج‌شنبه ۲۴ خرداد ۱۴۰۳ |  عضویت / ورود

نظرات طرح شده

علی اردکانی (امتیاز : 0)
توسط علی اردکانی در مورخه : جمعه، 30 اردیبهشت، 1401

سلام
محاسباتی که اینجا نوشتید، بسیار ساده هست و با هر CPU ای که در n سال اخیر ساخته شده باشه راحت زیر ۱ ثانیه بدست میاد:

شما فرض کنید که هر هسته CPU ما در هر ثانیه میتونه ۱۰ به توان ۸ عملیات ضرب/تقسیم/جمع/تفریق double precision float انجام بده. که فرض بدی هم نیست. فرکانس CPU مدرن بالای ۳ گیگاهرتز هست و هر عملیات ساده کمتر از ۳۰ تا سایکل انجام میشه. تازه SIMD و تریک های دیگه رو هم بیخیال بشید که عملا تعداد عملیات هامون رو میتونه ۴ برابر کنه

فرض کنید ۱۰ به توان ۵ کاربر داریم. هر کدوم ۱۰ درس رو امتحان دادن و درصد هر درس برای هر داوطلب رو داریم. باید یکبار میانگین رو بدست بیاریم، که میشه ۱۰ به توان ۶ عملیات. از طرفی محاسبه std هم به ازای هر نفر یک عملیات تفریق، جمع و ضرب اضافه میبره. آخر کار هم یک تقسیم و یک محاسبه ریشه دوم نیازه (فقط یکبار). پس در کل حدود ۴ در ۱۰ به توان ۶ عملیات نیاز داریم. پس در کل نباید به بیشتر از ۴۰ میلی ثانیه زمان برای محاسبه کل نتایج نیاز داشته باشیم! حالا شما فرض کنید من زیادی خوش بین بودم و سرعت ما ۲۰ درصد چیزیه که نوشتم. باز هم میشه ۲۰۰ میلی ثانیه! یک پلک زدن ۱۰۰ میلی ثانیه هست!

تازه تسکی هم هست که راحت موازی میشه. بنابراین در عمل تایم محاسبه تراز عملا هیچی نیست. از این هم بگذریم، همه اینها رو میشه داخل یک دیتابیس یا حتی Redis یا Memcached ذخیره کرد (با مموری نزدیک به صفر!) و به ازای هر کاربر صرفا یکبار از دیتابیس کوئری بگیریم


نام: [ کاربر جدید ]
ایمیل:

موضوع:
نظر:


اجازه استفاده از تگهای HTML را ندارید


جمع عدد 5 با 9 را در كادر زیر وارد نمایید:
(این كار برای جلوگیری از فعالیت موتورهای اسپمر است)


* توجه: نظر شما بعد از بررسی، نمایش داده خواهد شد.