Skip to content

Commit

Permalink
RelayProfiler no longer skips methods starting with @
Browse files Browse the repository at this point in the history
Reviewed By: josephsavona

Differential Revision: D27566452

fbshipit-source-id: ef5045936dbae5e8fd0f8f15cf6a1198f2a9f509
  • Loading branch information
kassens authored and facebook-github-bot committed Apr 6, 2021
1 parent f486653 commit 1bfa996
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 66 deletions.
47 changes: 12 additions & 35 deletions packages/relay-runtime/util/RelayProfiler.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
type Handler = (name: string, callback: () => void) => void;
type ProfileHandler = (name: string, state?: any) => (error?: Error) => void;

function emptyFunction() {}

const aggregateHandlersByName: {[name: string]: Array<Handler>, ...} = {
'*': [],
};
Expand All @@ -25,12 +23,8 @@ const profileHandlersByName: {[name: string]: Array<ProfileHandler>, ...} = {
};

const NOT_INVOKED = {};
const defaultProfiler = {stop: emptyFunction};
const shouldInstrument = name => {
if (__DEV__) {
return true;
}
return name.charAt(0) !== '@';
const defaultProfiler = {
stop() {},
};

/**
Expand Down Expand Up @@ -60,10 +54,6 @@ const shouldInstrument = name => {
* console.log(`Duration (${name})`, performance.now() - start);
* }
* });
*
* In order to reduce the impact on performance in production, instrumented
* methods and profilers with names that begin with `@` will only be measured
* if `__DEV__` is true. This should be used for very hot functions.
*/
const RelayProfiler = {
/**
Expand All @@ -79,11 +69,6 @@ const RelayProfiler = {
* in the course of executing another handler.
*/
instrument<T: Function>(name: string, originalFunction: T): T {
if (!shouldInstrument(name)) {
originalFunction.attachHandler = emptyFunction;
originalFunction.detachHandler = emptyFunction;
return originalFunction;
}
if (!aggregateHandlersByName.hasOwnProperty(name)) {
aggregateHandlersByName[name] = [];
}
Expand Down Expand Up @@ -161,22 +146,18 @@ const RelayProfiler = {
*
*/
attachAggregateHandler(name: string, handler: Handler): void {
if (shouldInstrument(name)) {
if (!aggregateHandlersByName.hasOwnProperty(name)) {
aggregateHandlersByName[name] = [];
}
aggregateHandlersByName[name].push(handler);
if (!aggregateHandlersByName.hasOwnProperty(name)) {
aggregateHandlersByName[name] = [];
}
aggregateHandlersByName[name].push(handler);
},

/**
* Detaches a handler attached via `attachAggregateHandler`.
*/
detachAggregateHandler(name: string, handler: Handler): void {
if (shouldInstrument(name)) {
if (aggregateHandlersByName.hasOwnProperty(name)) {
removeFromArray(aggregateHandlersByName[name], handler);
}
if (aggregateHandlersByName.hasOwnProperty(name)) {
removeFromArray(aggregateHandlersByName[name], handler);
}
},

Expand Down Expand Up @@ -226,22 +207,18 @@ const RelayProfiler = {
* attach to the special name '*' which is a catch all.
*/
attachProfileHandler(name: string, handler: ProfileHandler): void {
if (shouldInstrument(name)) {
if (!profileHandlersByName.hasOwnProperty(name)) {
profileHandlersByName[name] = [];
}
profileHandlersByName[name].push(handler);
if (!profileHandlersByName.hasOwnProperty(name)) {
profileHandlersByName[name] = [];
}
profileHandlersByName[name].push(handler);
},

/**
* Detaches a handler attached via `attachProfileHandler`.
*/
detachProfileHandler(name: string, handler: ProfileHandler): void {
if (shouldInstrument(name)) {
if (profileHandlersByName.hasOwnProperty(name)) {
removeFromArray(profileHandlersByName[name], handler);
}
if (profileHandlersByName.hasOwnProperty(name)) {
removeFromArray(profileHandlersByName[name], handler);
}
},
};
Expand Down
31 changes: 0 additions & 31 deletions packages/relay-runtime/util/__tests__/RelayProfiler-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,8 @@

const RelayProfiler = require('../RelayProfiler');

const DEV = __DEV__;

let mockMethod;
let mockObject;
const mockDisableDEV = () => {
global.__DEV__ = 0;
};

beforeEach(() => {
jest.resetModules();
Expand All @@ -31,10 +26,6 @@ beforeEach(() => {
};
});

afterEach(() => {
global.__DEV__ = DEV;
});

describe('instance', () => {
it('preserves context, arguments, and return value', () => {
const expectedArgument = {};
Expand Down Expand Up @@ -126,28 +117,6 @@ describe('instance', () => {
mockObject.mockMethod();
}).toThrowError('RelayProfiler: Handler did not invoke original function.');
});

it('ignores names starting with "@" unless __DEV__', () => {
mockDisableDEV();

mockMethod = jest.fn();
mockObject = {mockMethod: RelayProfiler.instrument('@mock', mockMethod)};

expect(mockObject.mockMethod).toBe(mockMethod);
expect(() => {
mockObject.mockMethod.attachHandler();
mockObject.mockMethod.detachHandler();
}).not.toThrow();
});

it('instruments names without "@" when not in __DEV__', () => {
mockDisableDEV();

mockMethod = jest.fn();
mockObject = {mockMethod: RelayProfiler.instrument('mock', mockMethod)};

expect(mockObject.mockMethod).not.toBe(mockMethod);
});
});

describe('aggregate', () => {
Expand Down

0 comments on commit 1bfa996

Please sign in to comment.