View Full Version : بهینه سازی برا سیستم های مختلف
UfnCod3r
سه شنبه 08 اسفند 1391, 07:54 صبح
سلام
فرض کنید مثلا ما ضرب ماتریس و .. رو با SSE نوشتیم
حالا اگه خروجی رو ببریم رو سیستمی که سی پی یوش SSE ساپورت نمی کنه مشکل پیش میاد
چطور انجین رو برای سیستم های مختلف سازگار کنیم !
یه راهش استفاده از شرط توی تابع مورد نظر هست و یا اشاره گر به تابع ! که کار خوبی نیست !:ناراحت:
یه راهشم دست کاری فایل .dll یا .exe هست ! مثا یه patch بنویسم !:متفکر:
راهه دیگه ای نیست ؟
تو موتور های دیگه این کارو چطوری انجام می دن ؟
:متفکر:
pswin.pooya
سه شنبه 08 اسفند 1391, 10:30 صبح
حالا اگه خروجی رو ببریم رو سیستمی که سی پی یوش SSE ساپورت نمی کنه مشکل پیش میاد
پیام illegal interuction میده و یه وقفه که بهش general protecton fault میگن رخ میده و در نتیجه سیستم عامل برنامه رو می بنده.
در حال حاضر میشه گفت تمام PCهای گیمرها از این ویژگی پشتیبانی میکنه.
چطور انجین رو برای سیستم های مختلف سازگار کنیم !
معمولا از define ها استفاده میکنن و برنامه رو یکسری برای حالت بدون SSE و یه سری دیگه برای SSE کامپایل می کنن
برای همچین موردی یه راهش استفاده از شرط هست که می تونی با کمک دستور اسمبلی CPUID همچین ویژگی رو چک کنی.که همنطور که خودت اشاره کردی راه خوبی نیست.
یه راه دیگه نوشتن برنامه های self optimize هست که راحت نیست و دقت زیادی لازم داره. اینجور برنامه ها بصورت run time کد خودشون رو تغییر میدن و یا قسمت های از اون رو عوض میکنن.\
تو موتور های دیگه این کارو چطوری انجام می دن ؟
معمولا پیش فرض اینه که ساپورت میشه
UfnCod3r
سه شنبه 08 اسفند 1391, 10:54 صبح
ممنون یه راه خوب پیدا کردم !:تشویق: :تشویق:
میام با حالت های مختلف کامپایل می کنم .
مثلا
Engine_SSE.dll
Engine_3DNow.dll
Engine_MP.dll
بعد اینا رو می زام توی یه فولدر و یه چی درست می کنم که وقتی اجراش می کنی بسته به سیستم دی ال ال رو کپی کنار لانچر و اسمشم هم بکنه Engine.dll !
بعد دیگه وقتی لانچر بالا میاد مشکلی نیست ! نه شرط و نه اشاره گر به تابع !
CopyRightC
:لبخند:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.