এক্সএনএ / মনোো গেমের ফ্রেমরেটটি আনলক করা কি আমাকে বলবে যে আমার কোডটি কতটা দক্ষ?


12

আমি এর মাধ্যমে ফ্রেমরেটটি মনো-গেমটিতে আনলক করছি:

this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;

এবং আমি খেলায় কীভাবে আপডেট করছি এবং আঁকছি তার ভিত্তি হিসাবে এটি ব্যবহার করছি।

240 x 160 এর রেজুলেশনে ফ্রেম কাউন্টার ব্যতীত কিছুই আঁকতে বা আপডেট করা না হয়ে আমি 9,000 থেকে 11,000 এফপিএসের একটি এফপিএস মান পাই ।

আমি যদি আমার সমস্ত কোডটি এতে যোগ করি তবে এটি প্রায় 1,100 এফপিএসে নেমে যায় ।

এটি কি খুব ভাল ইঙ্গিত দেয় যে আমার কোডটি জিপিইউকে (10x) উল্লেখযোগ্যভাবে কমিয়ে দিচ্ছে, এবং আমার কি উদ্বিগ্ন হওয়া উচিত? গেমটি 60 এফপিএসে চলতে চলেছে তাই আমি এখনও এ থেকে অনেক দূরে আছি, তবে আনলক করা ফ্রেমের হারের কোন পর্যায়ে আমার উদ্বিগ্ন হওয়া উচিত?

জিপিইউ: এএমডি ফায়ারপ্রো ডাব্লু 5000 (ফায়ারজিএল ভি)


1
পার্শ্ব নোট হিসাবে: আপনার বিকাশের পথে, আমি আপনাকে পরামর্শ দেব যে আপনি আপনার লক্ষ্য এফপিএস ডিবাগের পাশাপাশি মুক্তির ক্ষেত্রে রাখবেন; রিলিজে কিছু ভাল চলতে পারে তবে ডিবাগের মতো নরকের মতো ধীর হতে পারে, যা সত্যই দরকারী নয় :)
ভায়ল্যানকোর্ট

আসলে তা না. অন্যান্য উত্তরগুলি এর উত্তরের উত্তর দেয়, তবে মূল বক্তব্যটি হ'ল ভারী উত্তোলন আপনার গ্রাফিক্স কার্ড দ্বারা হার্ডওয়্যার ত্বরণ ব্যবহার করে করা হবে। আপনি যদি গ্রাফিক্সের মতো একই থ্রেডে কাজ না করেন (তবে আপনার হওয়া উচিত নয়), তবে আপনার কোড দ্বারা এফপিএসের প্রভাবিত হওয়ার কোনও কারণ নেই - কারণের মধ্যে - মোটেও।
ড্যান প্যান্ট্রি

উত্তর:


30

কেবল অদ্ভুতভাবে।

প্রথমত, এফপিএস একটি লিনিয়ার পরিমাপ নয় । 11 কে এফপিএস এবং 9 কে এর মধ্যে পার্থক্য অত্যন্ত ছোট (প্রতি ফ্রেমে 0.0000201 সেকেন্ড)। তবে 60 এবং 2060 এফপিএসের মধ্যে পার্থক্য (একটি 2 কে এফপিএস ডেল্টা, যা 11 কে এবং 9 কে-এর মধ্যে বিদ্যমান) 0.0161 সেকেন্ড ... অনেক বড়। এটি পারফরম্যান্স মেট্রিক হিসাবে কেবল বিপজ্জনক হতে পারে কারণ বড় পার্থক্যগুলি এটি খারাপ হতে পারে বা নাও পারে।

পরিবর্তে সময় প্রতি ফ্রেম ব্যবহার করা সম্পর্কে যুক্তিযুক্ত কিছুটা সহজ, তবুও এটি এখনও পরিস্থিতিটির একটি বিস্তৃত দৃশ্য view এটি কেবল আপনাকে জানায় যে গেমটির এক ফ্রেম কত সেকেন্ড নেয়। এটি নির্দিষ্ট করে না কেন আপনি যদি নির্দিষ্ট কোনও বৈশিষ্ট্য যুক্ত বা সক্ষম করার পরে অবিলম্বে ফ্রেমের সময়কালে একটি বড় বর্ধনের দিকে তাকান না।

আরও গভীরতার প্রোফাইলিং করার সময় নেওয়ার সিদ্ধান্ত নেওয়ার জন্য এটি একটি বেসিক ব্যারোমিটার হতে পারে। আপনি সিপিইউ বা জিপিইউ-আবদ্ধ কিনা তা নির্ধারণের জন্য এফপিএস ব্যবহার করা বিশেষত খারাপ; সিপিইউতে সময় মাপার মতো জিপিইউ প্রোফাইলিং এত সহজ নয় (এটি যেখানে আপনার সময় এবং এফপিএস-গণনার কোড সম্ভবত)।

আপনার কখন চিন্তিত হওয়া উচিত ... ঠিক আছে, আপনি নিজেই বলেছিলেন যে খেলাটি 60 টি এফপিএসকে লক্ষ্য করছে। যদি আপনি এর কাছাকাছি বা নীচে ডুবানো শুরু করেন, তবে আপনার সম্ভবত আপনার পারফরম্যান্স সংক্রান্ত সমস্যাগুলি সম্পর্কে আরও যত্ন সহকারে চিন্তাভাবনা শুরু করা উচিত। ততক্ষণে, আমি সবকিছু কাজ করার দিকে মনোনিবেশ করব এবং তারপরে এটি দ্রুত তৈরি করার বিষয়ে চিন্তা করব ।


6
শেষ বাক্যটির জন্য +1। অকালিক পারফরম্যান্স অপটিমাইজেশন, আমার মতে একটি খুব খারাপ অভ্যাস (অভিজ্ঞতা থেকে কথা বলা)।
sirank

1
c2.com/cgi/wiki?PrematureOptimization - বিষয় পড়তে প্রস্তাবিত
Machinarius

সর্বদা নয়, যদি আপনার একটি উচ্চ প্রান্তের মেশিন থাকে এবং এটি প্রায় 80 টি এফপিএস হয় তবে এটি আপনার মেশিনে যথেষ্ট ভাল হবে তবে আপনি যদি নিম্ন প্রান্তের কম্পিউটারগুলি লক্ষ্য করতে চান তবে তারা কেবল 15 টি এফপিএস পেতে পারে, আদর্শভাবে, এটি সর্বোত্তম হবে আপনি টার্গেট করতে চান এমন ন্যূনতম চশমা সহ কোনও মেশিনে আপনার পরীক্ষা করার জন্য, কিন্তু এটির ব্যর্থতা, এটি আপনার মেশিনের জন্য এটি অনুকূলিতকরণ এটির জন্যও এটি অনুকূলিত করতে পারে। অবশ্যই, যদি এটি আপনার নিম্ন প্রান্তের মেশিনগুলিতে পর্যাপ্ত পরিমাণে চালিত হয়, তবে আরও অনুকূলিতকরণের জন্য অতিরিক্ত প্রচেষ্টা ব্যয় করার কোনও কারণ নেই, বিশেষত বর্ধিত বাগগুলির ঝুঁকিতে।
প্রোগ্রামমুদে

5

আমি দেখতে পাচ্ছি না কেন আপনি এটি ব্যবহার করতে পারেন নি! মনে রাখবেন যে স্থির / ভেরিয়েবল টাইমস্টেপের মধ্যে পার্থক্যগুলির জন্য অ্যাকাউন্টে আপনাকে আলাদাভাবে কোডিং করতে হতে পারে, সুতরাং আপনি যখন প্রকাশের সময় এটিকে ঠিক করার পরিকল্পনা করছেন, আপনাকে সামঞ্জস্য করতে হবে। এই নিবন্ধটি দেখুন: http://rbwhitaker.wikidot.com / সময়- পদক্ষেপ

এটি কি খুব ভাল ইঙ্গিত দেয় যে আমার কোডটি জিপিইউকে উল্লেখযোগ্যভাবে কমিয়ে দিচ্ছে

পাশাপাশি সিপিইউ হতে পারে। আমি আপনার কোডটিতে গরম দাগগুলি খুঁজে পেতে প্রোফাইলে অন্তর্নির্মিত ভিজ্যুয়াল স্টুডিওগুলি (বা যখনই আপনি একটি বড় ফ্রেমরেট ড্রপ দেখেন) চালানোর পরামর্শ দেব।

আমার কি উদ্বিগ্ন হওয়া উচিত?

এটি সম্ভবত আপনি যে হার্ডওয়্যারটিকে লক্ষ্য করছেন তার উপর নির্ভর করে। আপনি সমর্থন করতে ইচ্ছুক সর্বনিম্ন ন্যূনতম প্রয়োজনীয় মেশিনগুলির বিরুদ্ধে আপনার কোডটি পরীক্ষা করা দরকার। যদি এটি কমপক্ষে 60 চালায় তবে আমি খুব বেশি উদ্বিগ্ন হব না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.