Skip to content

Commit

Permalink
Update PerformanceLogger to nullable timespans, points, extras
Browse files Browse the repository at this point in the history
Summary: Changelog: [Internal][Fixed] - When we close performance loggers (D23845307 (aebb97b)) we cannot rely that a timespan/point/extra will be in perf logger. Update types to reflect that.

Reviewed By: rubennorte

Differential Revision: D23907741

fbshipit-source-id: 63673aa69cd8c76253e4fee3463e37c86265cf7b
  • Loading branch information
Luna Wei authored and facebook-github-bot committed Sep 28, 2020
1 parent 35b8f76 commit b85b4f4
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 21 deletions.
2 changes: 1 addition & 1 deletion Libraries/Inspector/PerformanceOverlay.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class PerformanceOverlay extends React.Component<{...}> {
const items = [];

for (const key in perfLogs) {
if (perfLogs[key].totalTime) {
if (perfLogs[key]?.totalTime) {
const unit = key === 'BundleSize' ? 'b' : 'ms';
items.push(
<View style={styles.row} key={key}>
Expand Down
12 changes: 6 additions & 6 deletions Libraries/Utilities/__tests__/PerformanceLogger-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ describe('PerformanceLogger', () => {
perfLogger.startTimespan(TIMESPAN_1);
perfLogger.close();
let timespan = perfLogger.getTimespans()[TIMESPAN_1];
expect(timespan.endTime).toBeUndefined();
expect(timespan.totalTime).toBeUndefined();
expect(timespan?.endTime).toBeUndefined();
expect(timespan?.totalTime).toBeUndefined();
perfLogger.stopTimespan(TIMESPAN_1);
timespan = perfLogger.getTimespans()[TIMESPAN_1];
expect(timespan.endTime).toBeUndefined();
expect(timespan.totalTime).toBeUndefined();
expect(timespan?.endTime).toBeUndefined();
expect(timespan?.totalTime).toBeUndefined();
});
});

Expand Down Expand Up @@ -208,10 +208,10 @@ describe('PerformanceLogger', () => {
let perfLogger = createPerformanceLogger();
perfLogger.startTimespan(TIMESPAN_1, POINT_ANNOTATION_1);
perfLogger.stopTimespan(TIMESPAN_1, POINT_ANNOTATION_2);
expect(perfLogger.getTimespans()[TIMESPAN_1].startExtras).toEqual(
expect(perfLogger.getTimespans()[TIMESPAN_1]?.startExtras).toEqual(
POINT_ANNOTATION_1,
);
expect(perfLogger.getTimespans()[TIMESPAN_1].endExtras).toEqual(
expect(perfLogger.getTimespans()[TIMESPAN_1]?.endExtras).toEqual(
POINT_ANNOTATION_2,
);
});
Expand Down
30 changes: 16 additions & 14 deletions Libraries/Utilities/createPerformanceLogger.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ export interface IPerformanceLogger {
clearCompleted(): void;
close(): void;
currentTimestamp(): number;
getExtras(): {[key: string]: ExtraValue, ...};
getPoints(): {[key: string]: number, ...};
getPointExtras(): {[key: string]: Extras, ...};
getTimespans(): {[key: string]: Timespan, ...};
getExtras(): {[key: string]: ?ExtraValue, ...};
getPoints(): {[key: string]: ?number, ...};
getPointExtras(): {[key: string]: ?Extras, ...};
getTimespans(): {[key: string]: ?Timespan, ...};
hasTimespan(key: string): boolean;
isClosed(): boolean;
logEverything(): void;
markPoint(key: string, timestamp?: number, extras?: Extras): void;
removeExtra(key: string): ExtraValue | void;
removeExtra(key: string): ?ExtraValue;
setExtra(key: string, value: ExtraValue): void;
startTimespan(key: string, extras?: Extras): void;
stopTimespan(key: string, extras?: Extras): void;
Expand All @@ -60,10 +60,10 @@ const _cookies: {[key: string]: number, ...} = {};
const PRINT_TO_CONSOLE: false = false; // Type as false to prevent accidentally committing `true`;

class PerformanceLogger implements IPerformanceLogger {
_timespans: {[key: string]: Timespan} = {};
_extras: {[key: string]: ExtraValue} = {};
_points: {[key: string]: number} = {};
_pointExtras: {[key: string]: Extras, ...} = {};
_timespans: {[key: string]: ?Timespan} = {};
_extras: {[key: string]: ?ExtraValue} = {};
_points: {[key: string]: ?number} = {};
_pointExtras: {[key: string]: ?Extras, ...} = {};
_closed: boolean = false;

addTimespan(
Expand Down Expand Up @@ -109,7 +109,7 @@ class PerformanceLogger implements IPerformanceLogger {

clearCompleted() {
for (const key in this._timespans) {
if (this._timespans[key].totalTime != null) {
if (this._timespans[key]?.totalTime != null) {
delete this._timespans[key];
}
}
Expand Down Expand Up @@ -156,7 +156,7 @@ class PerformanceLogger implements IPerformanceLogger {
if (PRINT_TO_CONSOLE) {
// log timespans
for (const key in this._timespans) {
if (this._timespans[key].totalTime != null) {
if (this._timespans[key]?.totalTime != null) {
infoLog(key + ': ' + this._timespans[key].totalTime + 'ms');
}
}
Expand All @@ -166,7 +166,9 @@ class PerformanceLogger implements IPerformanceLogger {

// log points
for (const key in this._points) {
infoLog(key + ': ' + this._points[key] + 'ms');
if (this._points[key] != null) {
infoLog(key + ': ' + this._points[key] + 'ms');
}
}
}
}
Expand All @@ -178,7 +180,7 @@ class PerformanceLogger implements IPerformanceLogger {
}
return;
}
if (this._points[key]) {
if (this._points[key] != null) {
if (PRINT_TO_CONSOLE && __DEV__) {
infoLog(
'PerformanceLogger: Attempting to mark a point that has been already logged ',
Expand All @@ -193,7 +195,7 @@ class PerformanceLogger implements IPerformanceLogger {
}
}

removeExtra(key: string): ExtraValue | void {
removeExtra(key: string): ?ExtraValue {
const value = this._extras[key];
delete this._extras[key];
return value;
Expand Down

0 comments on commit b85b4f4

Please sign in to comment.