PDA

View Full Version : گفتگو: تفاوت های برنامه های 32 و 64 بیتی !



dasssnj
جمعه 21 شهریور 1393, 17:26 عصر
سلام دوستان . چند تا سوال داشتم.
آیا مصرف رم توسط برنامه های 64 بیتی بیشتر از 32 بیتی است ؟ چرا ؟ و اگر من یک برنامه را به هر دو صورت کامپایل کنم میزان رم مصرفی شان متفاوت خواهد بود؟
اگر من برنامه ام را فقط به صورت 32بیتی بسازم در سیستم های 64 بیتی با مشکل مواجه می شود ؟
اجرای برنامه های 32 و 64 بیتی روی ویندوز 64 بیتی چه تفاوتی دارد ؟
لطفا نظراتتون را بگید و همچنین برنامه هایی که تست کردید را ذکر کنید .
ممنون .

rahnema1
جمعه 21 شهریور 1393, 19:03 عصر
با توجه به این:
http://en.cppreference.com/w/cpp/language/types

اشاره گر در ویندوز64 بیتی 8 بایت و در 32 بیتی 4 بایت اشغال می کنه در نتیجه مثلا در مورد استفاده از آرایه های دو بعدی و ساختارهایی که اشاره گر زیاد توی اونها به کار رفته تفاوت زیاد می شه

#target
جمعه 21 شهریور 1393, 19:57 عصر
مصرف رم میتونه متفاوت باشه چون مقادیر پایه داده مثل int هشت بایتی میشه

برنامه 32 بیتی روی 64 بیتی اجرا میشود . بصورت WoW64

با برنامه های 64 بیتی فضای حافظه ریادی در دسترس دارید ولی روی برنامه 32 بیتی فضاکمتر از دو گیگابایت است

omid_kma
جمعه 21 شهریور 1393, 20:18 عصر
مصرف رم احتمالا کمی بیشتر میشه ولی در عوض بخاطر بیشتر شدن سایز رجیستر ها performance هم بهتر میشه
http://www.7khatcode.com/169/%D9%85%D8%B2%DB%8C%D8%AA-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-64-%D8%A8%DB%8C%D8%AA%DB%8C-%D8%A8%D9%87-32-%D8%A8%DB%8C%D8%AA%DB%8C?show=169#q169
(http://www.7khatcode.com/169/%D9%85%D8%B2%DB%8C%D8%AA-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-64-%D8%A8%DB%8C%D8%AA%DB%8C-%D8%A8%D9%87-32-%D8%A8%DB%8C%D8%AA%DB%8C?show=169#q169)
اشاره گر در ویندوز64 بیتی 8 بایت و در 32 بیتی 4 بایت اشغال می کنه در نتیجه مثلا در مورد استفاده از آرایه های دو بعدی و ساختارهایی که اشاره گر زیاد توی اونها به کار رفته تفاوت زیاد می شه
البته آرایه 2 بعدی دینامیک این طور هستن برای آرایه 2 بعدی استاتیک تفاوتی وجود نداره

omid_kma
سه شنبه 25 شهریور 1393, 19:07 عصر
مصرف رم میتونه متفاوت باشه چون مقادیر پایه داده مثل int هشت بایتی میشه

در مورد پوینتر ها تضمین شدست که ۸ بایتی باشن ولی سایز int یا مقادیر پایه ربطی به ۶۴ یا ۳۲ بیتی بودن نداره بستگی به پیاده سازی کامپایلری که استفاده میشه داره .(تنها چیزی که تضمین شدست "حداقل" بازه ای هست که پوشش میدن )