| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright 2015 The Chromium Authors. All rights reserved. | 3 Copyright 2015 The Chromium Authors. All rights reserved. |
| 4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
| 5 found in the LICENSE file. | 5 found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 | 7 |
| 8 <link rel="import" href="/perf_insights/mre/function_handle.html"> | 8 <link rel="import" href="/perf_insights/mre/function_handle.html"> |
| 9 <link rel="import" href="/tracing/base/range.html"> | 9 <link rel="import" href="/tracing/base/range.html"> |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 } | 43 } |
| 44 | 44 |
| 45 // Estimate number of times the CPU was woken up from idle to execute | 45 // Estimate number of times the CPU was woken up from idle to execute |
| 46 // different types of work (e.g., timer work) and the time the CPU had been | 46 // different types of work (e.g., timer work) and the time the CPU had been |
| 47 // idle before that. | 47 // idle before that. |
| 48 // See https://goo.gl/l7V5xg. | 48 // See https://goo.gl/l7V5xg. |
| 49 function findWakeUpsOnThread(thread) { | 49 function findWakeUpsOnThread(thread) { |
| 50 var wakeUps = {}; | 50 var wakeUps = {}; |
| 51 var foundWakeUps = false; | 51 var foundWakeUps = false; |
| 52 var lastTaskEnd = undefined; | 52 var lastTaskEnd = undefined; |
| 53 thread.iterateAllEvents(function(event) { | 53 for (var event of thread.getDescendantEvents()) { |
| 54 if (!event.isTopLevel) | 54 if (!event.isTopLevel) |
| 55 return; | 55 continue; |
| 56 var taskEnd = event.start + event.duration; | 56 var taskEnd = event.start + event.duration; |
| 57 if (lastTaskEnd === undefined) { | 57 if (lastTaskEnd === undefined) { |
| 58 lastTaskEnd = taskEnd; | 58 lastTaskEnd = taskEnd; |
| 59 return; | 59 continue; |
| 60 } | 60 } |
| 61 var sleepTime = event.start - lastTaskEnd; | 61 var sleepTime = event.start - lastTaskEnd; |
| 62 var isWakeUp = sleepTime >= IDLE_THRESHOLD_MILLISECONDS; | 62 var isWakeUp = sleepTime >= IDLE_THRESHOLD_MILLISECONDS; |
| 63 lastTaskEnd = taskEnd; | 63 lastTaskEnd = taskEnd; |
| 64 if (!isWakeUp) | 64 if (!isWakeUp) |
| 65 return; | 65 continue; |
| 66 var reason = sanitizeReason(findWakeUpReason(event)); | 66 var reason = sanitizeReason(findWakeUpReason(event)); |
| 67 if (wakeUps[reason] === undefined) | 67 if (wakeUps[reason] === undefined) |
| 68 wakeUps[reason] = {frequency: 0, sleepTimes: []}; | 68 wakeUps[reason] = {frequency: 0, sleepTimes: []}; |
| 69 wakeUps[reason].frequency++; | 69 wakeUps[reason].frequency++; |
| 70 wakeUps[reason].sleepTimes.push(sleepTime); | 70 wakeUps[reason].sleepTimes.push(sleepTime); |
| 71 foundWakeUps = true; | 71 foundWakeUps = true; |
| 72 }); | 72 } |
| 73 return foundWakeUps ? wakeUps : undefined; | 73 return foundWakeUps ? wakeUps : undefined; |
| 74 } | 74 } |
| 75 | 75 |
| 76 function updateThreadWakeUps(existingWakeUps, newWakeUps) { | 76 function updateThreadWakeUps(existingWakeUps, newWakeUps) { |
| 77 for (var reason in newWakeUps) { | 77 for (var reason in newWakeUps) { |
| 78 if (!(reason in existingWakeUps)) { | 78 if (!(reason in existingWakeUps)) { |
| 79 existingWakeUps[reason] = newWakeUps[reason]; | 79 existingWakeUps[reason] = newWakeUps[reason]; |
| 80 continue; | 80 continue; |
| 81 } | 81 } |
| 82 existingWakeUps[reason].frequency += newWakeUps[reason].frequency; | 82 existingWakeUps[reason].frequency += newWakeUps[reason].frequency; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 result.addPair('wakeUps', allWakeUps); | 122 result.addPair('wakeUps', allWakeUps); |
| 123 } | 123 } |
| 124 | 124 |
| 125 pi.FunctionRegistry.register(mapWakeUps); | 125 pi.FunctionRegistry.register(mapWakeUps); |
| 126 | 126 |
| 127 return { | 127 return { |
| 128 mapWakeUpsForTest: mapWakeUps | 128 mapWakeUpsForTest: mapWakeUps |
| 129 }; | 129 }; |
| 130 }); | 130 }); |
| 131 </script> | 131 </script> |
| OLD | NEW |