| Index: perf_insights/perf_insights/mappers/task_info_map_function.html
|
| diff --git a/perf_insights/perf_insights/mappers/task_info_map_function.html b/perf_insights/perf_insights/mappers/task_info_map_function.html
|
| deleted file mode 100644
|
| index 41246d4ce84685cfbecb60f26364f8f5c4c0feee..0000000000000000000000000000000000000000
|
| --- a/perf_insights/perf_insights/mappers/task_info_map_function.html
|
| +++ /dev/null
|
| @@ -1,112 +0,0 @@
|
| -<!DOCTYPE html>
|
| -<!--
|
| -Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| -Use of this source code is governed by a BSD-style license that can be
|
| -found in the LICENSE file.
|
| --->
|
| -
|
| -<link rel="import" href="/perf_insights/mappers/thread_grouping.html">
|
| -<link rel="import" href="/perf_insights/mre/function_handle.html">
|
| -<link rel="import" href="/tracing/model/flow_event.html">
|
| -<link rel="import" href="/tracing/model/slice.html">
|
| -<link rel="import" href="/tracing/value/numeric.html">
|
| -<link rel="import" href="/tracing/value/unit.html">
|
| -
|
| -<script>
|
| -'use strict';
|
| -
|
| -tr.exportTo('pi.m', function() {
|
| - var DURATION_NUMERIC_BUILDER = tr.v.NumericBuilder.createLinear(
|
| - tr.v.Unit.byName.timeDurationInMs,
|
| - tr.b.Range.fromExplicitRange(0, 250), 50);
|
| -
|
| - function taskInfoMapFunction(result, model) {
|
| - var canonicalUrl = model.canonicalUrl;
|
| - var threadGrouping = new pi.m.ThreadGrouping();
|
| - threadGrouping.autoInitUsingHelpers(model);
|
| - addTimeInQueue(result, canonicalUrl, model, threadGrouping);
|
| - addTopLevelTasksDuration(result, canonicalUrl, model, threadGrouping);
|
| - }
|
| -
|
| - function eatTrailingDigits(str) {
|
| - return str && str.replace(/[\d/]*$/, '');
|
| - }
|
| -
|
| - function histogramsToDict(dict) {
|
| - for (var process in dict) {
|
| - for (var thread in dict[process]) {
|
| - dict[process][thread] = dict[process][thread].asDict();
|
| - }
|
| - }
|
| - }
|
| -
|
| - function addTimeInQueue(result, canonicalUrl, model, threadGrouping) {
|
| - var timeInQueue = {};
|
| - model.flowEvents.forEach(function(flowEvent) {
|
| - if (!flowEvent.endSlice instanceof tr.model.Slice)
|
| - return;
|
| - var thread = flowEvent.endSlice && flowEvent.endSlice.parentContainer;
|
| - if (!thread)
|
| - return;
|
| - var process = thread.getProcess();
|
| - if (!process)
|
| - return;
|
| - var threadName = eatTrailingDigits(thread.name) || 'Unknown';
|
| - var processName = threadGrouping.getGroupNameForThread(thread);
|
| - addToHistogram(timeInQueue, processName, threadName, flowEvent.duration,
|
| - canonicalUrl);
|
| - });
|
| - histogramsToDict(timeInQueue);
|
| - result.addPair('time_spent_in_queue', timeInQueue);
|
| - }
|
| -
|
| - function addTopLevelTasksDuration(result, canonicalUrl, model,
|
| - threadGrouping) {
|
| - var timeInTask = {};
|
| - var cpuTimeInTask = {};
|
| - model.getAllThreads().forEach(function(thread) {
|
| - var process = thread.getProcess();
|
| - if (!process)
|
| - return;
|
| - var threadName = eatTrailingDigits(thread.name) || thread.tid;
|
| - var processName = threadGrouping.getGroupNameForThread(thread);
|
| - if (!thread.sliceGroup.length)
|
| - return;
|
| - thread.sliceGroup.slices.forEach(function(slice) {
|
| - if (!isTopLevelTask(slice))
|
| - return;
|
| - addToHistogram(timeInTask, processName, threadName, slice.duration,
|
| - canonicalUrl);
|
| - addToHistogram(cpuTimeInTask, processName, threadName,
|
| - slice.cpuDuration, canonicalUrl);
|
| - });
|
| - });
|
| - histogramsToDict(timeInTask);
|
| - result.addPair('time_spent_in_top_level_task', timeInTask);
|
| - histogramsToDict(cpuTimeInTask);
|
| - result.addPair('cpu_time_spent_in_top_level_task', cpuTimeInTask);
|
| - }
|
| -
|
| - // A slice is top level if it's on the receiving end of a post task and no
|
| - // slice above it is.
|
| - function isTopLevelTask(slice) {
|
| - if (!slice.inFlowEvents.length)
|
| - return false;
|
| - return !slice.parentSlice || !isTopLevelTask(slice.parentSlice);
|
| - }
|
| -
|
| - function addToHistogram(dict, processName, threadName, value, url) {
|
| - dict[processName] = dict[processName] || {};
|
| - dict[processName][threadName] = dict[processName][threadName] ||
|
| - DURATION_NUMERIC_BUILDER.build();
|
| - dict[processName][threadName].add(value, url);
|
| - }
|
| -
|
| - pi.FunctionRegistry.register(taskInfoMapFunction);
|
| -
|
| - // Exporting for tests.
|
| - return {
|
| - taskInfoMapFunctionForTest: taskInfoMapFunction
|
| - };
|
| -});
|
| -</script>
|
|
|