Вы спрашиваете о производительности, но не указываете, что должно работать, поэтому я предполагаю, что метрика - это «время отклика».
Два подхода - это просто варианты друг друга.Предварительное поколение - это просто другой способ кэширования.Таким образом, практически, единственное отличие состоит в том, что один является «ленивым», тогда как другой - нет.
Таким образом, разница в задержки будет равна нулю , когда все ресурсы будут кэшированы (т изменить).Но разница в производительности варьируется в зависимости от нескольких параметров:
- Время, необходимое для создания элемента
- Количество изменений каждого элемента
- Как часто каждый элементк нему обращаются
Переломным моментом является то, что если элемент изменяется реже, чем доступ к нему .
Но есть много других факторов, которые следует учитывать:
- Схема предварительной генерации гораздо лучше масштабируется , поскольку им не требуется дополнительный ЦП , если количество запросов увеличивается
- Схема предварительной генерации более отказоустойчива , поскольку нет базы данных, участвующей в критическом пути вашего приложения
- Схему предварительной генерации может быть трудноделать, если одно изменение в ресурсе X (например, оно удалено) вызывает изменение тысяч других ресурсов (например, если они все ссылаются на X).Это увеличило бы вероятность изменения ресурса чаще, чем доступ.