Professional Documents
Culture Documents
APJ DeepDiveSession5-PerformanceBestPractices
APJ DeepDiveSession5-PerformanceBestPractices
PUBLIC
INTERNAL
Agenda
• Best Practices
• Demo
• Summary
SAC Shell
Appliction Container
Please first consider:
▪ Loading invisible widgets in Background R
Script Runtime
Story Container
▪ Use the Pause Refresh API R
Load
event Application
widgets: Execute no
Widget already loaded
yes
onInitialization
▪ Set the widgets to Initialize
“Always initialize on
widget Assuming a widget
Update was changed during
widgets if onInitialization event
▪ Set table to planning disabled for the first loading Pause Refresh: false
▪ Set tables to refresh paused for the first Planning Enabled: true
rendering (in widget setting)
▪ Set tables to pause refresh as false as the widget
is needed
▪ Set table to planning enabled Deactivate Table:
Pause Refresh: true
Planning Enabled: false
▪ Users can quickly identify the long running scripts and get the indication
for optimization (appending ?APP_PERFORMANCE_LOGGING=true
in URL, press ctrl+shift+A)
Official Resources
▪ Analytics Designer performance best practices are published
▪ As Blog: https://saphanajourney.com/sap-analytics-cloud/learning-article/performance-best-practices-for-sap-
analytics-cloud-analytics-designer/
▪ Or Developer Handbook: https://saphanajourney.com/sap-analytics-cloud/analytics-designer/ → download
developer handbook → Chapter 12
▪ Story performance best practices are valid for analytic applications as well for those widgets that are
shared between these 2 artifacts (table, chart, geo map etc.)
▪ For details please refer to the best practices of story: https://saphanajourney.com/sap-analytics-cloud/learning-
article/best-practices-for-performance/
▪ To reach the best application start up performance and save system resource, please
smartly combine the following options
▪ Background loading for invisible widgets
▪ Access as less invisible widgets as possible in onInitialization event
▪ Always initialize on Startup for the needed widgets in onInitialization event
▪ Pause Refresh the invisible widgets and the widgets that are used in onInitialization event
▪ Switch off the planning capability of planning tables if they are not needed or not needed at
the application initialization
▪ Apply pause refresh as much as possible to
▪ invisible widgets and
▪ widgets used in OnInit event
▪ Planning use case
▪ Enable end user to do some UI actions and then refresh chart/table at once