mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
Better preload time counting
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
1
ts/window.d.ts
vendored
@@ -281,6 +281,7 @@ declare global {
|
||||
SignalContext: SignalContextType;
|
||||
|
||||
// Used only in preload to calculate load time
|
||||
preloadCompileStartTime: number;
|
||||
preloadStartTime: number;
|
||||
preloadEndTime: number;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user