Section access is performed during the opening of an application and does any data-reduction or not. After this it didn't impact anything.
Expressions will be cached after they are calculated the first time and there is enough RAM available. Here it's important that each unique expression-strings will be cached separate and that the following expressions are logical the same and return the same results but they are different from a caching point of view:
If expressions needs any kind of conditions set analysis should be preferred as the mostly fastest method with the least impact on the cache compared to other methods like if-conditions.
If your application is quite slow you should look if there are aggr- and/or interrecord-functions and/or if-loops in use and replace them with other logics. Also the datamodel could have a big effect and should be developed in the direction of a star-scheme or even a big flat-table.