BC TechDays 2022 - Coding 4 Performance

preview_player
Показать описание
Recording of presentation at the BC TechDays 2022 conference of 15 & 16 September 2022 in Antwerp (Belgium)

Title: Coding 4 Performance

Presenter: Eric Wauters (waldo)

Presented on Thursday 15 September 2022, 16:00 - 17:30

Contents:

2:50 Start
5:22 Goals
5:50 "Dual ethical ambiguity"
7:17 The Demo App and Demo Data
8:14 - Demo App Introduction
10:26 Code Reviews
10:47 - Code Review Checklist
12:14 - Data Access
12:14 - - 01 Keys
14:29 - - 02 Findset/Find('-')
16:40 - - 03a Flowfields on pages
21:06 - - 03b Calcfields
23:41 - - 04 Partial Records
28:20 - - 06 DeleteAll
32:52 - - 07 BulkInserts
36:53 - - Conclusion (1/2)
37:53 - - - Try to avoid BLOBS on TableExtensions
38:47 - - Conclustion (2/2)
39:28 - - A Glimpse into the future (DataTransfer Object Type)
43:49 - Performance
43:49 - - Coding
44:43 - - - Queries
46:38 - - - Queries with indexes
48:11 - - - Events
48:31 - - - - 01 Publishers
49:51 - - - - 02 Publishers With Subscribers
54:25 - - - - 03 OnModify/OnInsert/OnDeleteAll
56:48 - - - - 04 Manual event binding
57:42 - - - - 05 Subscription binding JIT
1:00:13 - - - Datatypes
1:00:13 - - - - Text vs Text Builder
1:01:34 - - - - Temptable vs Dictionaries
1:03:02 - - - - Lazy evaluation
1:04:57 - - - Conclusion
1:06:00 Background Processing
1:06:38 - Start Session
1:08:40 - Page Background Task
1:09:57 - Conclusion
1:10:39 Tools
1:12:17 - Debugger (sql statements)
1:13:50 - Flame Graph
1:17:29 - Pyroscope
1:20:16 - Conclustion
1:20:23 - - Flamegraph
1:22:04 - - Waldo.BCPerfTool
1:27:22 Questions
1:27:22 - If A OR B - does the order makes sense
1:28:15 - ChangeCompany for Queries
1:29:10 - Repeat .. Until 1
1:30:06 - Single instance codeunit for subscribers
1:30:39 - Not use complex types as var inside subscriber, use separate procedure
1:32:35 - Send examples to plattform team, does it happen?
1:33:20 - NCCI (Nonclustered Columnstore Indexes)
1:35:07 - Subscribe to modify trigger but use tableextension with onmodify trigger
1:37:07 - Single instance, no global variabels will be improvement?
1:38:00 - Would it make sense to use code analysers during check in?
1:38:57 - SetloadsFieds, does it improve reports?
1:40:10 - Datacompression setting on tables

Kudos to Marcus Nordlund for the detailed TOC
Рекомендации по теме
Комментарии
Автор

Word of advice. If you are going change your subscriber codeunits to single instance (53:23) beware of your global variables. It can be that your global variable contains state data. For instance, you have a codeunit with internal states. Before change to single instance these internal states were cleared/unloaded everytime your subscriber codeunit went out of scope. Now when your subscriber is single instance it keeps the internal states in the global vars unless if you exclicit clear them before calling.
In our scenario we had a lot of calling to a Setup Calling in the global declared codeunit. To prevent mass calling with SetupTable.Get we only loaded it once. So when we changed the subscriber object to single instance it never updated the loaded version of the setup table which made new changes in setup table wouldnt be applied until I restarted my session

marcusnordlund