2011-12-21 36 views
6

मैंने क्रोम पर कुछ परीक्षण किए और requestAnimationFrame ने 61 एफपीएस उत्पन्न किए जबकि setTimeOut(callback, 0), 233 एफपीएस उत्पन्न हुए।
यदि कोई 61 से अधिक एफपीएस (जो मुझे यकीन नहीं है कि) के लिए प्रस्तुत करना चाहते हैं, लेकिन सेटटाइमऑट के साथ प्रस्तुत करना बेहतर नहीं होगा और केवल अनुरोध का उपयोग करें एनीमेशन फ़्रेम का पता लगाने के लिए जब विंडो फोकस खो जाती है और फिर टाइमआउट को तब तक रोकें फोकस रिटर्न?setTimeOut 233 एफपीएस उत्पन्न करता है अनुरोध के दौरान एनीमेशन फ़्रेम उपज 61

और एक साइड सवाल: क्या यह पता लगाने का एक और तरीका है कि खिड़की अनुरोध के अलावा अन्य फोकस खो देता है एनीमेशन फ्रेम कॉलबैक को कॉल नहीं कर रहा है?

उत्तर

12

अनुरोध एनीमेशन फ्रेम सिंक में है आपके मॉनिटर दर ताज़ा साथ

यहाँ mozilla डॉक्स से एक संदर्भ है (वहाँ अधिक फ्रेम चेतन करने के लिए की तुलना में आप वास्तव में स्क्रीन पर दिखाए जा रहे हैं किसी काम का नहीं है): https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint

फ्रेम दर नियंत्रण

मोज़ेबरेपेंट प्रति प्रति सेकंड की निश्चित संख्या से अधिक नहीं आग लग जाएगा, उदाहरण के लिए 50 या 60. यह जानबूझकर है, क्योंकि आधुनिक ऑपरेटिंग सिस्टम और हार्डवेयर ब्राउज़र को से अधिक फ़्रेम प्रदर्शित करने की अनुमति नहीं देगा। फ्रेम दर सीमित करने से काम बर्बाद करने से बचा जाता है, जिससे सीपीयू उपयोग और शक्ति की बचत और समग्र सिस्टम प्रदर्शन में सुधार होता है।