Before + After Plugin VS Around Plugin
TLDR;
There is no difference between the two implementations
I recently encountered a situation in which I needed to do something before AND after a method was run in Magento. Two options present themselves:
- Create a before AND after plugin on the method
- Create a single around plugin on the method
There is no difference in the result of the logic so the decision would be made on which is more performant.
To test a created an Observer on controller_action_postdispatch
. The Observer has an empty execute method.
I then created a before plugin which starts a timer and an after plugin which stops the timer. The elapsed time is written to the logs.
The result was:
BeforeAfter | Start: 1666847559.454829, Stop: 1666847559.454833, Difference: 0.000004
I disabled those plugins and created a single around plugin for the same method. The timer is started at the begining of the method, then proceed is called, then the timer is stopped at the end of the method. The elapsed tiem is written to the logs.
The result was:
Around | Start: 1666847619.240797, Stop: 1666847619.240801, Difference: 0.000004
No difference.
Source code in case you want to try it yourself: PluginTest.rar