EgretEngine의 소형 패닉 조사

5620 단어 EgretEngine
각 프레임의 처리를 모두 계산하고 200ms보다 늦으면 로그를 출력해 보십시오
Update의 비용 측정 및 출력 로그index.html에서 60FPS로 설정했기 때문에 조사는 초당 60회enterFrame의 처리 원가를 호출해야 한다.
Main.ts

  this.addEventListener(egret.Event.ENTER_FRAME, this.enterFrame, this);

  private enterFrame(t: number): boolean {
    const start = performance.now();
    :
    const cost = performance.now() - start;
    if (200 < cost) {
      egret.log(`Cost over: ${cost}`);
    }
    return true;
  }
비용 소모 처리 없음
Update 이외의 비용 측정 및 로그 내보내기
Main.ts
 private enterFrame(t: number): boolean {
    const start = performance.now();
    if (this.lastCalled !== -1) {
      const otherCost = start - this.lastCalled;
      if (100 < otherCost) {
        egret.log(`Other cost over: ${otherCost}`);
      }
    }
    :
    const end = performance.now();
    const cost = end - start;
    if (100 < cost) {
      egret.log(`Cost over: ${cost}`);
    }
    this.lastCalled = end;
    return true;
  }
그러면 역시 이런 느낌.

이렇게 생각하면!
50FPS면 20ms 전부 틀렸어 수정된 건 이쪽이야
https://github.com/liberapp-inc/h5g-qiita-jump-and-run/commit/c1df90e2edd3128baec2f52dfd743fb679583fe0
그러고 보니 20ms의 긴박감이 있었고 간혹 처리되기도 했다

결론
원인은 아직 밝혀지지 않았지만, 단순히 업데이트 내부 처리가 무거운 것은 아닌 것 같다는 말

좋은 웹페이지 즐겨찾기