ãŸããã
æè¿ã®Geektimesã®èšäºããããŸãã- ãMozillaã¯ã¯ã©ã€ã¢ã³ãPCã®ããŒããŠã§ã¢çµ±èšããªãªãŒã¹ããŸãã ã ã ãããŠãäž»ãªåé¡ãè¡šçŸããschetilinããã®çŽ æŽãããã³ã¡ã³ã-
ç§ãã¡ã®ãµã€ãäœæè ããããã®çµ±èšãèŠãããšãæã¿ãŸãã ãããŠä»ã圌ãã¯i7 32Gbã§ã¯äžååãªãµã€ããäœæããŠããŸãã
ãŸãã ãäŒçµ±çãªJavaScriptãã³ãããŒã¯ã«é¢ããçå®ããšããèšäºãåãäžããããŸããã ãã®æ¬è³ªã¯ããªãŠã ã¯ãªãŠã ã®æ¯èŒã«ã¯é©ããŠããŸãããå®éã®äœ¿çšã«ã¯é©ããŠããŸããã
äœãšãäœãšã...
ç¶æ³ãæ³åããŠã¿ãŠãã ãã-ã¹ãŒããŒéçºè ã®Vasyaã座ã£ãŠåœŒã®ã¯ãŒã«ãªã³ãŒããäœæããåæ§ã«ã¯ãŒã«ãªããããŒãã§èµ·åããŸãã ãããŠ...ãµã€ãã¯ããŸãæ©èœããã¢ãã¡ãŒã·ã§ã³ã¯çŸãããã¹ã¯ããŒã«ã¯é«éã§ã¹ã ãŒãºã§ãã
ãããããŠãŒã¶ãŒã®Petyaã¯ã©ãããããã«åº§ã£ãŠãVasyaãã³ãŒããæžããŠãããªã³ã©ã€ã³ã¹ãã¢ã®Webãµã€ãã«ã¢ã¯ã»ã¹ããããšã«ããŸããã ãããŠ...ããã¯å§ãŸããŸãã-ã¢ãã¡ãŒã·ã§ã³åãããã®ã£ã©ãªãŒããããŒããããã¢ãããããã³ãµãŒããŒããã®ããŒã¿ã®è§£æã®è žå ã®ã©ãããèµ·åãããŸãã ããããã¹ãŠã«ã¯ãåŸ æ©ã¢ã€ã³ã³ãå®æçã«è¡šç€ºãããŸãã Petyaã®ã©ãããããã¯ã·ã§ãã¯ç¶æ ã«ãããPetyaèªèº«ãäžåšã§Vasyaãåªãå§ããŸããã 誰ãã極床ãã§ããããææ¡ããŸãããã
ãPetyaã¯äžçŽãŠãŒã¶ãŒã§ããããŒããŠã§ã¢ãæŽæ°ããŠãã ããããšããªãã¯èšããŸãã ãããããŠãŒã¶ãŒã¯åãµã€ãã«é©å¿ããå¿ èŠã¯ãããŸãããé«å質ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããã®ã¯ãµã€ãã®ããžãã¹ã§ãã
ãVasyaã¯æªãéçºè ã§ãïŒã-ããªãã¯èšããŸãã ãããŠç¡é§ã«ãVasyaã¯èªåã®ã³ãŒããæé©åããããã«æåãå°œãããŠããŸããããã¹ãŠã®ãã©ãããã©ãŒã ã§éã®ãã¹ãŠã®æ§æããã¹ãããããšã¯ã§ããŸããã ãããŠãããã§ã¯ãã©ãŠã¶éçºè ã«è³ªåããããŸãããªããJSã³ãŒããå®è¡ãããã·ã¹ãã ã®ããã©ãŒãã³ã¹ã«é¢ããå°ãªããšãããã€ãã®æ å ±ãWebéçºè ã«æäŸããªãã®ã§ããã ããšãã°ããŠãŒã¶ãŒãã©ã®ãã©ãŠã¶ã䜿çšããŠããããç¥ãããšãã§ããŸããïŒ ããã«ãããéçºè ã¯ã©ã®æ§æãšAPIã䜿çšã§ããããç¥ãããšãã§ããŸãã ãŸããããã¯ãããšãã°ãªãœãŒã¹ã倧éã«æ¶è²»ããã¿ã¹ã¯ãè€æ°ã®éšåã«åå²ãããšãã«ã¿ã€ã ã¢ãŠããéžæããå Žåã«åœ¹ç«ã¡ãŸãã ãã©ãŠã¶/ãšã³ãžã³ã®åããŒãžã§ã³ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã³ããŒããŠã§ã¢æ§æããšã«ãæé©ãªã¿ã€ã ã¢ãŠãã¯ç°ãªããŸãã
Webéçºè ããOSã®çš®é¡ãšããŒããŠã§ã¢æ§æãèæ ®ããå°ãªããšãããããã®ããã©ãŒãã³ã¹ã€ã³ããã¯ã¹ãæã£ãŠãããšæ³åããŠãã ããã 次ã«ã10ã®ãã¡2ã®ã€ã³ããã¯ã¹ã䜿çšãããšããã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ãå®å šã«ãªãã«ããããšãã§ããéã®å Žåã¯ã10ã§æ倧éã«äœ¿çšããŸãã ãŸããåã€ã³ããã¯ã¹ã®å žåçãªã¿ã¹ã¯ïŒããŒãã«ã«100è¡ãæ¿å ¥ãããªã©ïŒã®å®è¡æéãå«ãçµ±èšããŒãã«ããããšäŸ¿å©ã§ãã ããããç§ãç¥ãéãããã®çš®ã®ãã®ã¯ãããŸããã
ã«ãŠã³ã¿ãŒ
ããŠãã³ãŒããå®è¡ãããã·ã¹ãã ã®ããã©ãŒãã³ã¹ã«é¢ããçŽæ¥çãªããŒã¿ã¯ãããŸããã ããããFPSïŒãã¬ãŒã /ç§ïŒ-åªããéæ¥çãªææšããããŸãã é«FPSã¯ããŠãŒã¶ãŒãå¿«é©ãªããã²ãŒã·ã§ã³ã«å¿ èŠãªãã®ã§ãããããã¯éçºè ã枬å®ã§ãããã®ã§ãã ãããŠã枬å®ã§ããå Žåã¯ãããã€ãã®æ¡ä»¶ã§ãã®ã¡ããªãã¯ã䜿çšã§ããŸãã ãããå ã«é²ã¿ãŸããã...
ãã«ãïŒ
FPSã¯ãã¢ãã¿ãŒç»é¢äžã®1ç§ãããã®ãã¬ãŒã æ°ã§ãã ãã©ãŠã¶ãŒã®å Žåãããã¯ãã©ãŠã¶ãŒãã€ã³ã¿ãŒãã§ãŒã¹ãæŽæ°ãããšãã®1ç§ãããã®åæ°ã§ãã
äžè¬ã«ããã©ãŠã¶ã§ã®ã¬ã³ããªã³ã°ããã»ã¹ã¯ããã»ã©åçŽã§ã¯ãããŸããã ãã©ãŠã¶ã¯ããŒãžå šäœãåæç»ããªãããã«ããããŒãžãã¬ã€ã€ãŒãšãã¹ãŠã®æã«åå²ããŸããæªéã¯äœãç¥ã£ãŠããŸãã ãã®ããã»ã¹ã®ãžã£ã³ã°ã«ã«ç»ããšãä»ã§ã¯æå³ããªããã¬ã³ããªã³ã°ã¢ã«ãŽãªãºã ã¯ããŒãžã§ã³ã«ãã£ãŠç°ãªãå ŽåããããŸãã ååãšããŠãèŠããŠããå¿ èŠããããŸãã1ã€ã®ã«ãŒã«-DOMèŠçŽ ã«é »ç¹ã«ã¢ã¯ã»ã¹ããå Žåã¯ãã¡ã€ã³æ§é ãããããåŒãåºãå¿ èŠããããŸãã åºå®ãŸãã¯çµ¶å¯Ÿé 眮ããŸãã
ãããã£ãŠãFPSã枬å®ããå¿ èŠããããŸãã ãã©ãŠã¶ã1ç§éã«çŽ60åã€ã³ã¿ãŒãã§ãŒã¹ãæŽæ°ããããšããããšãç¥ãããŠããŸãïŒã€ãŸããçæ³çãªFPSã¯60ã§ãïŒã ãŸãã次ã«ã€ã³ã¿ãŒãã§ã€ã¹ãåæç»ããåã«ã³ãŒãã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããrequestAnimationFrameïŒïŒã¡ãœããããããŸãã ãã®ã¡ãœããã¯ãã·ã¹ãã ã®è² è·ãå¢å ããã匷å¶åæç»ãåŒãèµ·ããå¯èœæ§ãããsetTimeout / setIntervalã®ä»£ããã«ããã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ã«åŒ·ãæšå¥šãããŸãã
FPSã«ãŠã³ã¿ãŒãèšè¿°ããŸãã
let frameCount = function _fc(timeStart){ let now = performance.now(); let duration = now - timeStart; if(duration < 1000){ _fc.counter++; } else { _fc.fps = _fc.counter; _fc.counter = 0; timeStart = now; console.log(_fc.fps); } requestAnimationFrame(() => frameCount(timeStart)); } frameCount.counter = 0; frameCount.fps = 0; frameCount(performance.now())
ã«ãŠã³ã¿ãŒã¯ããããã³ã³ãœãŒã«ã§ç¢ºèªã§ãããšèããŠããŸãã ããããããã¯æ°ç§ã§åäœããã³ãŒãã¯ã¯ããã«é«éã«å®è¡ãããŸã-åäœãšããªç§ã®å°æ°éšã ããšãã°ãã«ãŠã³ãæéã100ããªç§ã«æå°åããŠã¿ãŸãããã ãã¡ãããããã¯å¿ ç¶çã«ç²ŸåºŠãäœäžãããŸãããé床ã®å¢å ã¯10åã«ããªããŸãã
é«éFPSã«ãŠã³ã¿ãŒïŒ
let frameCount = function _fc(timeStart){ let now = performance.now(); let duration = now - timeStart; if(duration < 100){ _fc.counter++; } else { _fc.fps = _fc.counter * 10; _fc.counter = 0; timeStart = now; console.log(_fc.fps); } requestAnimationFrame(() => frameCount(timeStart)); } frameCount.counter = 0; frameCount.fps = 0; frameCount(performance.now())
ãããŠãããã¯ç§ã«æ°ã¥ããŸãã-ãªãäž¡æ¹ã®ã«ãŠã³ã¿ãŒã䜿çšããªãã®ã§ããã ããã«ãããç¹å®ã®ã«ãŠã³ã¿ã·ã¹ãã ãåŸãããŸãã1ã€ã¯é«éã§ãã1ã€ã¯æ£ç¢ºã§ãã èŠãŠã¿ãŸããã...
let frameCount = function _fc(fastTimeStart, preciseTimeStart){ let now = performance.now(); let fastDuration = now - (fastTimeStart || _fc.startTime); let preciseDuration = now - (preciseTimeStart || _fc.startTime); if(fastDuration < 100){ _fc.fastCounter++; } else { _fc.fastFPS = _fc.fastCounter * 10; _fc.fastCounter = 0; fastTimeStart = now; console.log(_fc.fastFPS); } if(preciseDuration < 1000){ _fc.preciseCounter++; } else { _fc.preciseFPS = _fc.preciseCounter; _fc.preciseCounter = 0; preciseTimeStart = now; console.log(_fc.preciseFPS); } requestAnimationFrame(() => frameCount(fastTimeStart, preciseTimeStart)); } frameCount.fastCounter = 0; frameCount.fastFPS = 0; frameCount.preciseCounter = 0; frameCount.preciseFPS = 0; frameCount.startTime = performance.now(); frameCount()
ããã§ãå°ãªããšãäœããã®åœ¢ã§å®è¡ç°å¢ã®çŸåšã®ç¶æ ãè©äŸ¡ã§ããŸãã ãããããã¹ãŠåãããã«ãç§ã¯ãã¹ãŠãçµãã£ãŠããªãã£ããšããæèŠãæ®ããŸããã§ããã ãããŠåã³ç§ã¯å®éšããããšã«ããŸãã...
ãã®å³ã¯ãã«ãŠã³ã¿ãŒã®ãªã»ããã«1ã€ã®ã¡ãžã£ãŒïŒãã¬ãŒã ïŒãè²»ãããå®éã®ã«ãŠã³ãã¯æ¬¡ã®ã¡ãžã£ãŒããéå§ããããšã瀺ããŠããŸãã ã«ãŠã³ãæéãççž®ãããšãã«ãŠã³ã¿ãŒã¯ãªã»ãããããŸããã ãŸããFPSã®ã«ãŠã³ãé床ããããã«åäžããŸãã ã«ãŠã³ãæéã®æ°ããå€ã¯ãé«éã«ãŠã³ã¿ãŒã§ã¯ïŒ100/6ïŒ* 5 = 83 ãæ£ç¢ºãªã«ãŠã³ã¿ãŒã§ã¯ïŒ1000/60ïŒ* 59 = 983ãšå®çŸ©ãããŠããŸãã
ã¿ã€ã ã¢ãŠã
ã¬ã€ãã®å¯Ÿè±¡ãšãªãã¡ããªãã¯ãæœåºãããŸããã ããã§ãã³ãŒãã®å®è¡æéãå¶åŸ¡ããã¡ã«ããºã ãå¿ èŠã§ãã ãããŠãã¿ã€ã ã¢ãŠãããã«ã¿ãªã©ã®ãã©ã¡ãŒã¿ãŒãå¿ èŠãªã®ã§ãã¿ã€ã ã¢ãŠãã®éãå€ãããŸãã ãããããããã®ãã©ã¡ãŒã¿ãŒã®æé©å€ãã©ã®ããã«æ±ºå®ããã®ããšããçåãããã«çããŸãã çãã¯ç°¡åã§ã-ããã«ãæ¹æ³ã¯ãããŸããã ããŒã¿ãå¿ èŠã§ãããçµ±èšãå¿ èŠã§ãã ã¿ã€ã ã¢ãŠãå¶åŸ¡ã¡ã«ããºã èªäœã¯éåžžã«å®çŸ©å¯èœã§ããã ããã¯éåžžã«ç°¡åã§ãïŒ
timeoutCorrection(){ if(fastFPS <= 2 && timeout < 1000){ timeout += delta; } else if(fastFPS > 2 && timeout > 16) { timeout -= delta; } }
ã³ãŒããããåç §ã20 FPS ïŒfastFPS * 10ïŒã®å€ããŸãã¯ããå°ã-" <= "ã®å€ã«ãªãããšãããããŸãã 16ããã³1000ã®å€ã¯å¶éã§ãã æå°ã¿ã€ã ã¢ãŠãã¯16ã§ã60 FPSã«å¯Ÿå¿ããŸãã ãŸãã1 FPSã«å¯Ÿå¿ããæ倧å€ã®1000ãéžæãããŸãã
é«éFPSã«ãŠã³ã¿ãŒã®æ°ããå€ãèšå®ããããã³ã«ãã¿ã€ã ã¢ãŠã調æŽæ©èœãåŒã³åºãããããšãæ³å®ãããŠããŸãã
åºæŒè
FPSã枬å®ãããã¿ã€ã ã¢ãŠããå¶åŸ¡ãããŸãã ããã§ããšã°ãŒãã¥ãŒã¿ãå¿ èŠã§ã-ãã®ããŒã¿ã«åºã¥ããŠãã³ãŒãã®å®è¡ãå¶åŸ¡ããããå¿ èŠã«å¿ããŠåŒã³åºããé ãããã ãã®é¢æ°ã§ãã ç§ãã¡ã¯æžããŠããŸã...
let requestAdaptiveAnimation = function _raa(cb, priority, timeout, ...args){ if( !_raa.cbsStore.has(cb) || timeout){ _raa.cbsStore.add(cb); _raa.queue = _raa.queue.then(()=>{ return new Promise((res)=>{ setTimeout(()=>{ requestAnimationFrame(()=>{ cb(...args); res(); }); }, timeout || 0); }); }); return; } if(frameCount.fastFPS >= 4 || priority){ requestAnimationFrame(()=>cb(...args)); return; } if( frameCount.preciseFPS < 15){ _raa.queue = _raa.queue.then(()=>{ return new Promise((res)=>{ requestAnimationFrame(()=>{ cb(...args); res(); }); }); }); return; } setTimeout(()=>{ requestAnimationFrame(()=>cb(...args)); }, _raa.timeout); } requestAdaptiveAnimation.cbsStore = new Set(); requestAdaptiveAnimation.queue = Promise.resolve();
ãã®é¢æ°ã¯ããã®ã¡ãœããã®åºç€ã§ããããã requestAnimationFrameã«äŒŒãæå³çãªååãä»ããããŠããŸãã ã€ãŸã requestAnimationFrameãä»ããŠè¡ãã€ã³ã¿ãŒãã§ãŒã¹ã®æŽæ°ã ãã ãããã®ã¡ãœããã䜿çšããŠã¿ã€ã ã¢ãŠããèšå®ããããšã¯ã§ããªããããsetTimeoutã䜿çšããŠã©ãããŒãäœæããŸãã
Promiseã®ãã§ãŒã³ã«åºã¥ããŠãéåæãã¥ãŒãç·šæãããŸããããã¯ããŸãã¿ã€ã ã¢ãŠããèšå®ã§ããããã«ãã次ã«ãã¢ãã©ã³ã·ã§ãã³ãŒãã®å®è¡ãé²æ¢ããŸãã
requestAdaptiveAnimationã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- éä¿¡ãããã³ãŒã«ããã¯ãåããŠäœ¿çšãããããã¿ã€ã ã¢ãŠããæå®ãããå Žåãã³ãŒã«ããã¯ã®å®è¡ã¯æ±çšãã¥ãŒã«å ¥ããããŸãã
- ã¢ãã¡ãŒã·ã§ã³ã§ãåãã³ãŒã«ããã¯ãè€æ°ååŒã³åºãããå Žåãé«éFPSã«ãŠã³ã¿ãŒã®å€ãé«ãå ŽåãçŽæ¥requestAnimationFrameãåŒã³åºãããŸãã
- æ£ç¢ºãªFPSã«ãŠã³ã¿ãŒã®å€ãã¯ãªãã£ã«ã«ãããå€15ãäžåããšãã³ãŒã«ããã¯ã¯ãã¥ãŒã«å
¥ããããŸãã èŠèŠçã«ã¯ãäžæçãªããªãŒãºã¢ãã¡ãŒã·ã§ã³ã®ããã«èŠããŸãã æ°åã®15ã¯äž»èŠ³çã«éžæãããŠããŸãããç§ã®æèŠã§ã¯ãã¹ã¯ããŒã«ããŒãžã®å€ã¯ãŸã 蚱容å¯èœãšåŒã°ããŸãã
- ããã©ã«ãã§ã¯ã調æŽãããã¿ã€ã ã¢ãŠããéããŠrequestAnimationFrameãåŒã³åºããŸãã
ãã¹ã
ãã¹ãŠããŸãšããŠãã¹ããããšãã§ãã ããã«ãã¿ã€ã ã¢ãŠããšãã«ã¿ãå«ãæªè§£æ±ºã®ã¿ã¹ã¯ããŸã ãããŸããã ãã¹ãã®ããã«ãç§ã¯å°ããªã¹ã¿ã³ããæžããã¿ã€ã ã¢ãŠããšãã«ã¿ã®ããŸããŸãªæ¯çã調ã¹å§ããŸããã
æåã«ãã¿ã€ã ã¢ãŠããšãã«ã¿ãã¢ãã¡ãŒã·ã§ã³åããããªããžã§ã¯ãã®æ°ãšçžé¢ãããããšã«ããŸããã ãããŠãç§ã¯ãã®ãããªèæ ®äºé ããããŸãã-èŠçŽ ãå€ãã»ã©ãéå§ã¿ã€ã ã¢ãŠãå€ã倧ãããªãããããããã«ã¿ãå°ãããªããŸããããã§ãªããã°ãã¿ã€ã ã¢ãŠããšã¢ãã¡ãŒã·ã§ã³ã«åŒ·ãå€åããããŸãã
ãããã£ãŠãèšç®ã¯æ¬¡ã®ããã«åæžãããŸããã
timeout = numberObjects; delta = 1/numberObjects;
ããããããã¯ã²ã©ãæ©èœããç§ã¯è£æ£ä¿æ°- æ¯çãå°å ¥ããããšã«ããŸããã èšç®ã¯æ¬¡ã®ããã«åæžãããŸããã
timeout = numberObjects/ratio; delta = ratio/numberObjects;
ç§ã¯ãã®ä¿æ°ãå€æŽãããã£ãŒããèŠå§ããŸããã
100åã®ãªããžã§ã¯ãïŒ
500åã®ãªããžã§ã¯ãïŒ
1000åã®ãªããžã§ã¯ãïŒ
2000åã®ãªããžã§ã¯ãïŒ
ãã®ã°ã©ãã¯ãFPSã15ãã¬ãŒã æªæºã®ãä¿åããã¥ãŒã¡ã«ããºã ãå«ãŸããŠãããšããç¹ã§èå³æ·±ããã®ã§ãã
æ¯èŒãã¬ãŒãïŒ
ãã¬ãŒãäžã§ãæé©ãªãªãã·ã§ã³ãéžæãããã¹ããç¶ããŸãã
ããã§å°ãæ確ã«ããå¿ èŠããããŸãã å®éãæåã®åŒã³åºããã¥ãŒã®ããã«1000åã®èŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããããã«æ瀺ããŠããŸãããåæã«ã¢ãã¡ãŒã·ã§ã³åããã®ã¯300å以äžã§ããããã¯ãããšãã°ã300çªç®ã®èŠçŽ ã®ã¢ãã¡ãŒã·ã§ã³ãéå§ããããšãã«ãæåã®èŠçŽ ã®ã¢ãã¡ãŒã·ã§ã³ãæ¢ã«çµãã£ãŠããããã§ãã
å€èŠ³ã¯æ¬¡ã®ãšããã§ãïŒçŽ300åã®èŠçŽ ïŒã
1000åã®ãªããžã§ã¯ããçãã¢ãã¡ãŒã·ã§ã³ïŒè¡šã®æé«ã®ãã®ã®æ¯èŒïŒïŒ
次ã«ãã¢ãã¡ãŒã·ã§ã³ã®é·ããå¢ããïŒããŒãžãæ倧ãºãŒã ããã ãã§ãïŒãããäžåºŠãã¹ãããŸãã
çŸåšã®å€èŠ³ïŒãã¹ãŠã®èŠçŽ ã¯1000ã§ãïŒïŒ
ããã§ããã¹ãŠã®èŠçŽ ãåæã«ã¢ãã¡ãŒã·ã§ã³åãããŠããããšãããããŸãã
1000åã®ãªããžã§ã¯ããé·ãã¢ãã¡ãŒã·ã§ã³ïŒè¡šã®æé«ã®ãã®ã®æ¯èŒïŒïŒ
ã°ã©ãã¯ããã¥ãŒã®ãä¿åãã¡ã«ããºã ãã ã¿ã€ã ã¢ãŠã ïŒèŠçŽ /æ¯çïŒããã³ãã«ã¿ ïŒæ¯ç/èŠçŽ ïŒã1-ã°ã©ãäžã®ãã³ã¯ã®ç·ã«çããå Žåã«ã®ã¿ãªã³ã«ãªããªãããšã瀺ããŠããŸãã
ããã§ãã¿ã€ã ã¢ãŠããšãã«ã¿ã決å®ããŸããã ä»ããããã€ãã£ãã¡ãœããsetInterval ã setTimeout ã requestAnimationFrameãšæ¯èŒãããšãã§ãã
ã°ã©ãã¯ãå°æ°ã®èŠçŽ ã§æå°éã®ãªãŒããŒããããããããšã瀺ããŠããŸãã é©å¿ã¡ã«ããºã ããªã³ã«ãããšããã¡ããã³ãŒãå®è¡ã®æéã¯é·ããªããŸãããFPSã¯ã¬ãã«30ã®ãŸãŸã§ãã ãã€ãã£ãã¡ãœããã¯FPSã7-8ã«åŒãäžããŸãã
ããããã¹ãŠã®ããã§ããã ãããããããã©ãããããã§ãã¹ãŠã®ãã¹ããå®è¡ããŸããããã®èœæžãã®æåã®ç®æšã¯ãããŸããŸãªæ§æã®ããŸããŸãªã·ã¹ãã ã§åäœããããšã§ããã ãã®ããããã¹ã¯ãããäžã§ãã¹ãŠåãããšã確èªããŸãã
çãã¢ãã¡ãŒã·ã§ã³ã®ãã€ãã£ãã¡ãœãããšã®æ¯èŒïŒ
é·ãã¢ãã¡ãŒã·ã§ã³ã®ãã€ãã£ãã¡ãœãããšã®æ¯èŒïŒ
ã©ãããããïŒCPUïŒA8ãRAMïŒ8GbïŒããã³ãã¹ã¯ãããïŒCPUïŒi5ãRAMïŒ8GbïŒã§ãã¡ã«ããºã ã¯åæ§ã«åäœããããšãããããŸã-FPSã¯30ã«ä¿ãããŸããå¯äžã®éãã¯ãã³ãŒãå®è¡ãæéãšãšãã«ã©ãã ã䌞ã³ããã§ãã
ãŸãšã
è¯ãïŒ
- ã¡ã«ããºã ã¯æ©èœããŠãããFPSã¯ã·ã£ããããŠã³ãããŠããŸã
- ãã©ãŠã¶ïŒFirefoxãChromeïŒã«é¢ä¿ãªãFPSã¬ãã«ãä¿åãã
- ã·ã¹ãã ããã©ãŒãã³ã¹ã«é¢ä¿ãªãFPSãç¶æãã
æªãïŒ
- ããŸããŸãªã¢ãã¡ãŒã·ã§ã³ã®ç¬ç«æ§ã ãã®ãããç¹å®ã®æ¡ä»¶äžã§åŸã§å®è¡ãããã¢ãã¡ãŒã·ã§ã³ã¯æ©ãçµäºããå ŽåããããŸãã
ããŠãããã§ãã¹ãŠã§ãã ãããããã®å¥åŠãªæã...ãããŠç§ã¯åã³æ±ºããŸãã...
PS
ã¿ããªãããæ°åã ã³ã¡ã³ããšæ¹å€ãæè¿ããŸãã ããªããããã€ãã¹ããå ¥ããå Žåãå¯äžã®èŠæ±ã¯ãäœã®ããã«ãäœè¡ããããããããŸãã