Better preload time counting

This commit is contained in:
Fedor Indutny
2025-04-03 15:24:35 -07:00
committed by GitHub
parent f1877da8f4
commit b9e3985058
6 changed files with 28 additions and 3 deletions

View File

@@ -2125,7 +2125,8 @@ app.on('ready', async () => {
// We use this event only a single time to log the startup time of the app
// from when it's first ready until the loading screen disappears.
ipc.once('signal-app-loaded', (event, info) => {
const { preloadTime, connectTime, processedCount } = info;
const { preloadCompileTime, preloadTime, connectTime, processedCount } =
info;
const loadTime = Date.now() - startTime;
const sqlInitTime = sqlInitTimeEnd - sqlInitTimeStart;
@@ -2136,6 +2137,7 @@ app.on('ready', async () => {
const innerLogger = getLogger();
innerLogger.info('App loaded - time:', loadTime);
innerLogger.info('SQL init - time:', sqlInitTime);
innerLogger.info('Preload Compile - time:', preloadCompileTime);
innerLogger.info('Preload - time:', preloadTime);
innerLogger.info('WebSocket connect - time:', connectTime);
innerLogger.info('Processed count:', processedCount);
@@ -2146,6 +2148,7 @@ app.on('ready', async () => {
event.sender.send('ci:event', 'app-loaded', {
loadTime,
sqlInitTime,
preloadCompileTime,
preloadTime,
connectTime,
processedCount,

View File

@@ -130,8 +130,17 @@ if (cachedData || process.env.GENERATE_PRELOAD_CACHE) {
}
// eslint-disable-next-line import/no-dynamic-require
window.preloadCompileStartTime = Date.now();
require(srcPath);
if (script) {
if (script.cachedDataRejected) {
console.log('preload cache rejected');
} else {
console.log('preload cache hit');
}
}
// See `ts/scripts/generate-preload-cache.ts`
if (script && process.env.GENERATE_PRELOAD_CACHE) {
writeFileSync(cachePath, script.createCachedData());

View File

@@ -113,8 +113,9 @@ Bootstrap.regressionBenchmark(
const [, info] = await Promise.all([queue(), run()]);
const { loadTime, preloadTime, connectTime } = info;
const messagesDuration = loadTime - preloadTime - connectTime;
const { loadTime, preloadTime, preloadCompileTime, connectTime } = info;
const messagesDuration =
loadTime - preloadTime - preloadCompileTime - connectTime;
return {
messagesDuration,

View File

@@ -19,6 +19,7 @@ import type { SocketStatuses } from '../textsecure/SocketManager';
export type AppLoadedInfoType = Readonly<{
loadTime: number;
preloadTime: number;
preloadCompileTime: number;
connectTime: number;
messagesPerSec: number;
}>;

1
ts/window.d.ts vendored
View File

@@ -281,6 +281,7 @@ declare global {
SignalContext: SignalContextType;
// Used only in preload to calculate load time
preloadCompileStartTime: number;
preloadStartTime: number;
preloadEndTime: number;

View File

@@ -95,6 +95,16 @@ const IPC: IPCType = {
ipc.invoke('settings:get:mediaCameraPermissions'),
logAppLoadedEvent: ({ processedCount }) =>
ipc.send('signal-app-loaded', {
// Sequence of events:
// 1. Preload compile start
// 2. Preload start
// 3. Preload end
//
// Compile time is thus: start - compileStart
preloadCompileTime:
window.preloadStartTime - window.preloadCompileStartTime,
// Preload time is: end - start
preloadTime: window.preloadEndTime - window.preloadStartTime,
connectTime: preloadConnectTime - window.preloadEndTime,
processedCount,