سلام آقا امیر حسین .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
چند مورد را خواستم بگم که البته قبلا هم حدودا گفته بودم .
پروسه های نرم افزار ، در هر لحظه ممکنه از یک منابع سخت افزاری (cpu ، کش ، رم ، پردازنده و حافظه ی گرافیک و ...) استفاده کنند و در لحظه ی دیگه اون منابع را آزاد کنند یا نکنند .
مثلا یک پروسه ، در لحظه ی 0.01 ثانیه ، 100 مگابایت از رم ، 3 هسته ی cpu ، و 550 مگابایت حافظه ی گرافیکی و 100 هسته ی گرافیکی را استفاده کنه که در لحظه ی 0.02 ثانیه ، مثلا 400 مگابایت رم ، هیچ پردازش از cpu (0 هسته ی cpu) ، 1 مگابایت حافظه ی گرافیکی و هیچ تعداد هسته ی گرافیکی را هم درگیر نکنه .
همچنین همه ی ارتباطاتی که پروسه ها و نرم افزارها دارن با هر نوع سخت افزاری ارتباط برقرار میکنن ، فقط از طریق درایور (که سازنده ی اون سخت افزارها ارائه میکنن) هست . حتی خود سیستم عامل هم نمیتونه بدون درایور با ارتباط برقرار کنه . از رم گرفته تا پردازنده و ... . حالا بعضی از درایورها مثل رم ها و ... ، بصورت plug and play بصورت ذاتی در خود سیستم عامل نصب میشه و بعضی ها را ما باید نصب کنیم .
در اغلب موارد ، هم این طوره که نرم افزارها برای ارتباط با سخت افزار مورد نظر (از رم گرفته و ...) ، توسط یه برنامه یا قطعه کدِ میانی ، به سیستم عامل درخواست میدن و سیستم عامل براشون توسط درایوری که از اون شرکت سازنده روی خودش نصب هست ، دستورات را برای اجرا بهش منتقل میکنه .
اون قطعه کد میانی ، میتونه توابع و api های خود سیستم عامل باشه یا api ثالث (مثل open gl و directx و ... که رابطی برای ارتباط با کارت گرافیک برای برنامه ها هستند) .
یعنی در اغلب موارد ، برنامه ها مستقیما با درایورها برای ارتباط با سخت افزارهاشون در تماس نیستن . مخصوصا اگه سخت افزارهای پایه مثل cpu و رم باشه .
اما در گاهی از موارد اون هم برای کارت گرافیک ، اون هم در بعضی از نرم افزارها شایع هست که مستقیما با درایور کارت گرافیک کار میکنن (مثل افترکت و بعضی از پلاگین هاش و ...) . که حالا داستان های خودش را داره .
بهینه شدن ، به این معنی نیست که هر مقدار منابع سخت افزاری بود ، اون بازی یا برنامه باید 100 درصدش را پر کنه وگرنه بهینه نیست .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
همونطور که توضیح دادم ، برنامه ها در هر لحظه ، فقط یک تعداد خاصی از منابع را استفاده میکنن که در استفاده از منابع ، محدود هستند . البته بجز بحث رندر و کلا کارهایی از این قبیل که محدودیت ندارند (که این نوع کارها هم بسیار کم هست) .
برای نمونه میتونید تست شخصی هم کنید . یه سیستم بدون محدودیت منابع سخت افزاری تهیه یا تست کنید . یه سیستم مثلا با رم 64 گیگ (یا 128 گیگ) ، پردازنده ی i9 نسل جدید و بازی های غیر استراتژیک را مخصوصا در ریزولیشن و تنظیمات بالا تست کنید و نموداری که در طول زمان از این منابع استفاده کرد را بررسی کنید ببینید چطوره .
کلا سازنده ی برنامه ها سعی میکنند که طوری طراحی اش کنند که کمترین منابع (مخصوصا رم ، cpu و ...) را استفاده کنند .
اینکه چرا به 100 درصد نزدیک نمیشد ، باید نمودار استفاده از منابع سخت افزاری توسط بازی و همچنین تنظیمات بازی و سیستم عامل را بررسی کنید . همچنین به روز بودن سیستم عامل و درایور ها .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
نوع بازی و نسخه ی بازی هم مهم هست .
اگر همه ی این موارد (و مواردی که شاید فعلا به ذهنم نرسه) درست بود ، بخاطر طراحی بازی ممکنه باشه .
یعنی در بازی ها ، اول cpu یک فریم ای را تولید میکنه . بعد برای پردازش به گرافیک برای رندر میفرسته .
چون استفاده از هسته های cpu محدود هست ، مخصوصا در بازی ها سنگین ای که نیاز به پردازش منطقی و cpu ی سنگین تری دارند ، یعنی محاسبات فیزیک یا تکسچر و این موارد سنگین باشه ، نیاز به عملکرد تک هسته ای سریعتری دارند تا فریم ، سریعتر تولید بشه تا دیر به دست گرافیک برای رندر نرسه اما چون عملکرد تک هسته ای ، خیلی نمیتونه فرق کنه (اختلاف تک هسته ای پردازنده ها ، خیلی نیستند) ، بنابراین فریم ریت محدود میشه (در واقع همون گلوگاه میشه) . کما اینکه توی همه ی بازی ها هم تقریبا همینطوره . حالا محاسبات یک بازی ، سنگین تر هست و روی 80 تا 90 فریم میمونه و یکی از 150 فریم بیشتر نمیره و یکی هم از فرضا 300 فریم (که یک عاملش همینه) .
متوجه نشدم .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
یعنی همه ی قطعات سخت افزارتون بهتر و هم نسلِ اون یکی سخت افزارتون بوده و بازی و سیستم عامل و درایورهاتون هم به روز بوده اما در همه ی شرایط مساوی ، نتیجه ی عکس گرفتید؟
یکی از دلایل این مورد مثلا ممکنه بخاطر اختلاف مولفه هایی مثل texture rate و pixel rate و ... باشه که ولو ممکنه در مدل بالاتر ، بیشتر و سریعتر نباشن .
همچنین مدل های مختلف از مثلا amd و nvidia هم حتی در مدل های بالا هم ممکنه این طور باشه که یک عاملش بخاطر طراحی متفاوت و همچنین درایورهای متفاوت شون باشه .
اما در کل نیاز به جزئیات و نمودار نتایج تون هست .
برابری میکردن یا اینکه (با وجود سخت افزار بهتر) ، فریم ریت پایین تری داشت؟برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
این دو با هم متفاوت هستند .
کلا نیاز به آمار دقیق از جزئی ترین موارد داره . از اطلاعات دقیق سخت افزاری و نرم افزاری و نسخه های درایور و سیستم عامل و بازی گرفته ، تا نمودار مصرف منابع در بازی ها در بازه ی زمانی ای که بازی انجام گرفت و ... .
directx 9 ، چه بازی ای تحت اش هست که جدید باشه برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنیدبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
یکی از عوامل این اختلاف و کاهش کارایی در نسل جدید ، استفاده از بازی های قدیمی میتونه باشه .
رم ، تنها چیزی هست که بخاطر وجود page file در سیستم عامل ، طراحی اش متفاوت هست .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اگه رم 8 گیگ دارین و page file فعال باشه و مثلا 12 گیگ رم نیاز داشته باشه ، این طور نیست که سیستم عامل بگه 8 گیگ رو از رم بگیره و 4 گیگ دیگه را از هارد که بشه 12 گیگ .
بلکه حدودا میشه گفت که درصدی عمل میکنه . یعنی بصورت پیش فرض فرضا 500 مگ از page file را استفاده میکنه ، حالا که میزان رم از فرضا 50 درصد بیشتر بشه ، میزان استفاده از page file را هم به شدتِ خیلی بیشتر از قبل ، افزایش میده . هر چی درصد استفاده از رم بالاتر بره ، باز بر شدتش افزوده میشه .
مثلا وقتی 3 گیگ از 8 گیگ از رم که استفاده میشه ، از 500 مگ از page file استفاده کنه ، وقتی از 5 گیگ از رم استفاده کنه ، این میزان فرضا به 8 گیگ میرسه و وقتی به 6 گیگ میرسه ممکنه page file ، فرضا از بیست گیگ هم رد کنه .
اینها مثال و فرضیات بود برای درک بهتر . اینکه چقدر در واقع استفاده میشه ، کاملا بستگی به نیاز اون برنامه و تشخیص موارد داده های با ضرورت کمتر توسط سیستم عامل داره .
بله .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
زبان c و c++ ، قابلیت های سطح پایین بهتری دارند و برای کار کردنِ مستقیم با درایورها ، خیلی بهتر از زبان های دیگه هستند . همچنین زبان های سریعتری نسبت به بقیه هستند .
اما از اونجایی که کار کردن مستقیم با درایورها و همچنین مدیریت آزادسازی منابع رم در این دو زبان با برنامه نویس هست ، کار را برای برنامه نویس ها سخت تر و کدنویسی را بیشتر و طولانی تر میکنه ، در خیلی از موارد ، زبان های دیگه هم مورد استفاده قرار میگیره .
منظورتون را از سخت افزارهای یکسان متوجه نشدم .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اگه منظورتون ایجاد نرم افزار برای سخت افزار خاص هست ، اتفاقا این کار را وابسته به اون سخت افزار و معمولا هم جزء کارهای پیچده میکنه .
فرض کنید که یک نرم افزار فقط برای کارت گرافیک انویدیا و درایور اون نوشته شده باشه .
اولا وابسته به اون میشه . یعنی سیستمی که میخواد با اون نرم افزار کار کنه ، باید اون نسخه از درایور انویدیا را داشته باشه . و درایور هم که بدون سخت افزار کار نمیکنه . یعنی برای استفاده از اون نرم افزار ، باید و حتما اون مدل از انویدیا را داشت (یا فرضا برای استفاده ی بهینه ترش) .
و چون اون برنامه مستقیما داره با درایور انویدیا کار میکنه ، پیچیدگی کدنویسی اون برنامه را بسیار بالاتر نسبت به زمانی میبره که توسط یک api و واسط ای مثل directx بخواد با کارت گرافیک ارتباط برقرار کنه .
اما خوب مزیت هاش اینه که ممکنه توابع و قابلیتی در یک درایور باشه که در اون api (مثل directx) نباشه (که این موارد ، شایع هست) و به همین دلیل اون برنامه نیاز به ارتباط برقرار کردن مستقیم با اون درایور و یا اون نسخه از درایور داشته باشه تا از قابلیت خاص از گرافیک و سخت افزار استفاده کنه .
همچنین سرعت اجرای کد را هم بالاتر میبره .
اما دیگه نمیتونه با همون کد ، با گرافیک های دیگه ارتباط برقرار کنه . یعنی مثلا برای اینکه همون عملیات را در کارت amd انجام بده ، مجددا از اول باید کدهای مربوط به اون را این بار برای درایور amd بنویسه و ... .
هر سازنده ای سعی میکنه بهترین بهینه سازی را در زمان انتشارش بده .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط XFXForce برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اینکه سرعت بالاتر در اثر چه مواردی هست ، باید صرفا کدها مشخص بشن تا تصمیم بشه گرفت .
مثلا ممکنه تعداد کاراکترهای این بازی های ویندوز و کنسول های بازی که میگید ، یا فیزیک شون یا کلا محاسبات و منطق شون (مثلا تعداد نقاط در هر شی در بازی که اون شکل را تشکیل میده که الان اسمش را فراموش کردم که چی بهش میگن) فرق کنه که باعث سرعت کمتر بشه .
اما اگه شما اون نقاط را برای یک شی ، از یک حدی بالاتر ببرید (مثلا 1 میلیون نقطه ای که یک شی از یک آدم را تشکیل میده را به 2 میلیون برسونید) ، ممکنه هیچ فرقی در نظرتون نکنه اما از نظر پردازش ، کاملا متفاوت هست و در این مورد ، دقیقا 2 برابر پردازش بیشتری میطلبه .
کلا جزئیات و مسائل نرم افزاری خیلی جزئیات زیادی داره و باید با علت و دقیق بهش پرداخت .






پاسخ با نقل قول
Bookmarks