With the help of user Bonzo, I also did some IM/PHP/Imagick timing comparisons. Each tests included 100 repeats to get an average time and each test was repeated 5 times and the results of the latter are shown in the following PDF table. The reason for the repeats was because the server could have occasional loads that cause spikes in the run times. Also the first run from the 100 repeats was generally longer time than others. Thus my feeling is to use the Min rather than the Average as a measure of the proper run time.

PHP exec script loop: this was a bash script loop of 100 repeats that was launched by PHP exec
PHP loop exec script: this was a bash script of one command that was looped 100 times in PHP
PHP loop exec cmd: this was a direct PHP/IM command that was run 100 repeats via exec
Imagick loop; this was an Imagick loop of 100 repeats

Note: the image computed by Imagick for the -distort barrelinverse (bulge test) did not look consistent with the other tests. I believe that Imagick has a bug in this command.

The image used for all the tests was the one created by the annotate test and is the following 935x113 image: