Lazy initialization of Firestore using the code below results in cold start of ~5 seconds (256MB function):
import * as firebase from 'firebase-admin';
import {Firestore} from '@google-cloud/firestore';
const getApp = (): firebase.app.App => {
if (!firebase.apps?.length) {
firebase.initializeApp();
}
return firebase.apps[0];
};
let database: Firestore;
const getDatabase = (): Firestore => {
if (!datatabase) {
database = getApp().firestore();
}
return database;
};
While the following code only takes ~2 seconds (256MB function cold start):
import {Firestore} from '@google-cloud/firestore';
let database: Firestore;
const getDatabase = (): Firestore => {
if (!datatabase) {
database = new Firestore();
}
return database;
};
Is it because of firebase admin package size or initializeApp() doing some heavy lifting?
Environment
- Firebase SDK version: 8.1.1
- Firebase Product: function, firestore, firebase admin
- Node.js version: 12
- "firebase": "8.1.1",
"firebase-admin": "9.4.1",
"firebase-functions": "3.12.0",
"firebase-tools": "^8.16.2"
"@google-cloud/firestore": "4.7.1"