react-native/Libraries/Utilities/BridgeProfiling.js
Tadeu Zagallo 0f16d15d64 [ReactNative] Optimize console.profile and add markers on JS entry points
Summary:
@public

Right now the profiler shows how long the executor took on JS but doesn't show
how long each of the batched calls took, this adds a *very* high level view of JS
execution (still doesn't show properly calls dispatched with setImmediate)

Also added a global property on JS to avoid trips to Native when profiling is
disabled.

Test Plan:
Run the Profiler on any app

{F22491690}
2015-06-02 06:22:49 -08:00

38 lines
854 B
JavaScript

/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule BridgeProfiling
* @flow
*/
'use strict';
var GLOBAL = GLOBAL || this;
var BridgeProfiling = {
profile(profileName: String, args?: any) {
if (GLOBAL.__BridgeProfilingIsProfiling) {
if (args) {
try {
args = JSON.stringify(args);
} catch(err) {
args = err.message;
}
}
console.profile(profileName, args);
}
},
profileEnd() {
if (GLOBAL.__BridgeProfilingIsProfiling) {
console.profileEnd();
}
},
};
module.exports = BridgeProfiling;