PDA

View Full Version : سوال: عملکرد بر عکس Register



Nabege
جمعه 14 تیر 1392, 19:07 عصر
چرا وقتی متغیر هامو تو مایکروسوفت ویژوال ستودیو ریجیستر می کنم به جای این که سرعت اجرای برنامه بالا بره، کمتر میشه ؟؟؟

مثلا یکی از برنامه هام اینجوری شد :
زمان فرایند برنامه قبل از ریجیستر کردن : 7 ثانیه
زمان فرایند برنامه بعد از ریجیستر کردن : 11 ثانیه

کسی می دونه علتش چیه ؟ چطوری می شه اصلاحش کرد ؟

omidshaman
جمعه 14 تیر 1392, 21:00 عصر
چون کامپایلر های جدیدتر کلمه register رو در نظر نمی گیرن و کار خودشونو می کنن ( خود کامپایلر تصمیم می گیره چی register تعریف بشه چی نشه) register هم فقط صرفا یک hint ه برای کامپایلر . که اغلب وقتا در نظر گرفته نمیشه
متن از سایت msdn
Microsoft Specific

The compiler does not accept user requests for register variables; instead, it makes its own register choices when global register-allocation optimization (/Oe option) is on. However, all other semantics associated with the register keyword are honored.

البته سرعت نباید کمتر بشه اونم 4 ثانیه!! احتمالا شما درست تست نکردین. اگر کدو بزاری بهتر میشه نظر داد.

Nabege
شنبه 15 تیر 1392, 12:04 عصر
یعنی نمیشه یکسری متغیر ها رو به طور اجباری ریجیستر کرد ؟؟؟ هیچ راهی نداره ؟! به بمبست رسیدیم ؟؟!!

UfnCod3r
شنبه 15 تیر 1392, 13:01 عصر
کلا هر عملیاتی جمع ضرب و .. انجام بخواد بشه باید بره تو رجیستر
اگه خیلی اجبار داری از اسمبل استفاده کن
خود کامپایلر تشخیص میده