OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 var __running = false; | |
6 var __old_title = ""; | |
7 var __scroll_by = 300; | |
8 var __raf; | |
9 | |
10 var __t_last; | |
11 var __t_est; | |
12 var __t_est_total; | |
13 var __t_est_squared_total; | |
14 var __t_count; | |
15 | |
16 function __init_stats() { | |
17 __t_last = undefined; | |
18 __t_est = undefined; | |
19 __t_est_total = 0; | |
20 __t_est_squared_total = 0; | |
21 __t_count = 0; | |
22 } | |
23 __init_stats(); | |
24 | |
25 function __calc_results() { | |
26 var M = __t_est_total / __t_count; | |
27 var X = __t_est_squared_total / __t_count; | |
28 var V = X - M * M; | |
29 var S = Math.sqrt(V); | |
30 | |
31 var R = new Object(); | |
32 R.mean = 1000.0 / M; | |
33 R.sigma = R.mean - 1000.0 / (M + S); | |
34 return R; | |
35 } | |
36 | |
37 function __scroll_down() { | |
38 var y = window.scrollY; | |
39 window.scrollBy(0, __scroll_by); | |
40 if (window.scrollY == y) | |
41 __stop(); | |
42 } | |
43 | |
44 function __update_fps() { | |
45 var t_now = new Date().getTime(); | |
46 if (window.__t_last) { | |
47 var t_delta = t_now - __t_last; | |
48 if (window.__t_est) { | |
49 __t_est = (0.1 * __t_est) + (0.9 * t_delta); // low-pass filter | |
50 } else { | |
51 __t_est = t_delta; | |
52 } | |
53 var fps = 1000.0 / __t_est; | |
54 document.title = "FPS: " + (fps | 0); | |
55 | |
56 __t_est_total += t_delta; | |
57 __t_est_squared_total += t_delta * t_delta; | |
58 __t_count++; | |
59 } | |
60 __t_last = t_now; | |
61 } | |
62 | |
63 function __sched_update() { | |
64 if (!__raf) { | |
65 if ("webkitRequestAnimationFrame" in window) | |
66 __raf = webkitRequestAnimationFrame; | |
67 else if ("mozRequestAnimationFrame" in window) | |
68 __raf = mozRequestAnimationFrame; | |
69 } | |
70 __raf(function() { | |
71 if (!__running) | |
72 return; | |
73 __update_fps(); | |
74 __scroll_down(); | |
75 __sched_update(); | |
76 }); | |
77 } | |
78 | |
79 function __start() { | |
80 if (__running) | |
81 return; | |
82 __old_title = document.title; | |
83 __running = true; | |
84 __sched_update(); | |
85 } | |
86 | |
87 function __stop() { | |
88 __running = false; | |
89 document.title = __old_title; | |
90 } | |
91 | |
92 function __reset() { | |
93 __stop(); | |
94 document.body.scrollTop = 0; | |
95 __init_stats(); | |
96 } | |
97 | |
98 function __force_compositor() { | |
99 document.body.style.webkitTransform = "translateZ(0)"; | |
100 } | |
OLD | NEW |