اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

سرعت اجرای عملیات داده‌ها

+1 امتیاز
34 نمایش

یه سوال فنی دارم که احتمالاً به سخت‌افزار هم مربوط خواهد شد. این که برای انواع داده‌ها٬ سرعت مقداردهی و عملیات حسابی و عملیات دیگه چقدر با هم تفاوت سرعت داره؟
مثلاً عبارت‌های زیر از نظر سرعت اجرا واقعاً با هم فرقی دارن یا نه؟


int a;
long int b;
long long int c;
aa;
b
b;
cc;
a
b;
bc;
a
c;
در ++C زبانی بسیار کوچک‌تر و پاکیزه‌تر در تلاش برای خروج است. (Bjarne Stroustrup)
پرسیده شده دوشنبه ۲۹ آبان ۱۳۹۱ در C++ توسط برنامه‌نویس  
بازتگ شده چهارشنبه ۲۱ فروردین ۱۳۹۲ توسط admin

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

اگه منظور از aa عمل ضرب یعنی a*a باشه بله فرق داره. به صورت کلی عملیات روی داده‌های هم‌اندازه‌ی ماشین باشه، مثلاً اگه ماشین ۳۲ بیتی باشه و دو متغیر ۳۲ بیتی رو با هم جمع کنیم، سرعتش بیشتر از اینه که دو متغیر ۶۴ بیتی یا ۱۶ بیتی رو با هم جمع کنیم.
به عنوان مثال با یک پردازنده‌ی ۳۲ بیتی، برای جمع دو متغیر ۳۲ بیتی، هر متغیر به حافظه‌ی ۳۲ بیتی داخل پردازنده کپی می‌شه و در یک عمل (مثلاً ADD EAX, EBX) جمع انجام می‌شه اما برای جمع دو متغیر ۶۴ بیتی، هر متغیر باید در دو مرحله به حافظه‌ی ۳۲ بیتی پردازنده کپی بشه و دو بار عمل جمع (ADD EAX, EBX) در پردازنده انجام بشه و در نهایت دو قسمت محاسبه شده با هم یکی بشه که بیشتر از یک عمل هست.
دلیلی هم برای دو متغیر ۱۶ بیتی وجود داره.
برای حالت‌های a*c حتی یک تبدیل هم باید انجام بشه. بنابراین جواب اینه که بله سرعت اجرا فرق داره.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۱۶ اسفند ۱۳۹۱ توسط prodo  
انتخاب شده شنبه ۳۱ فروردین ۱۳۹۲ توسط admin