@@ -1151,9 +1151,23 @@ namespace ts {
1151
1151
/** Performance measurements for the compiler. */
1152
1152
/*@internal */
1153
1153
export namespace performance {
1154
+ declare const onProfilerEvent : { ( markName : string ) : void ; profiler : boolean ; } ;
1155
+ let profilerEvent : ( markName : string ) => void ;
1154
1156
let counters : Map < number > ;
1155
1157
let measures : Map < number > ;
1156
1158
1159
+ /**
1160
+ * Emit a performance event if ts-profiler is connected. This is primarily used
1161
+ * to generate heap snapshots.
1162
+ *
1163
+ * @param eventName A name for the event.
1164
+ */
1165
+ export function emit ( eventName : string ) {
1166
+ if ( profilerEvent ) {
1167
+ onProfilerEvent ( eventName ) ;
1168
+ }
1169
+ }
1170
+
1157
1171
/**
1158
1172
* Increments a counter with the specified name.
1159
1173
*
@@ -1189,7 +1203,7 @@ namespace ts {
1189
1203
*/
1190
1204
export function measure ( measureName : string , marker : number ) {
1191
1205
if ( measures ) {
1192
- measures [ measureName ] = ( getProperty ( measures , measureName ) || 0 ) + ( mark ( ) - marker ) ;
1206
+ measures [ measureName ] = ( getProperty ( measures , measureName ) || 0 ) + ( Date . now ( ) - marker ) ;
1193
1207
}
1194
1208
}
1195
1209
@@ -1216,12 +1230,17 @@ namespace ts {
1216
1230
commentTime : 0 ,
1217
1231
sourceMapTime : 0
1218
1232
} ;
1233
+
1234
+ profilerEvent = typeof onProfilerEvent === "function" && onProfilerEvent . profiler === true
1235
+ ? onProfilerEvent
1236
+ : undefined ;
1219
1237
}
1220
1238
1221
1239
/** Disables (and clears) performance measurements for the compiler. */
1222
1240
export function disable ( ) {
1223
1241
counters = undefined ;
1224
1242
measures = undefined ;
1243
+ profilerEvent = undefined ;
1225
1244
}
1226
1245
}
1227
1246
}
0 commit comments