I think some understanding of output modifiers might help here. The whole point of using output modifiers is coding convenience for people who are not skilled at using PHP to create snippets. The price of that convenience is execution speed. This is true in both Revo and Evo, BTW.
Comparing the operation of snippets versus output filters (leaving out the the things that MODX does in both cases, like parsing the tag) shows a dramatic difference.
If you write a snippet that prints one string if some value is greater than another value, MODX finds the snippet, and sends it the two values, using a very small number of lines of code (I'd guess less than 10). The snippet itself can be done in one line of code:
<?php
return $prop1 < $prop2? 'Something' : 'Something else';
Done -- and done in a few milliseconds.
I leave the creation of the output modifier version of this as an exercise for the reader, but let's look at what MODX does with it.
First, it runs code (about 30 lines) that loads the modOnputFilter Class (about 100 lines of code) and the modOutputFilter class, which is 647 lines long. Then it has to figure out what, out of all the possible things you can do with output modifiers -- a monstrous list if you consider the permutations -- , you want done. It has to search through the approximately 120 possible filter names (once for each ':' in the tag) to find the named filter, then run its code and pass the result on to the next filter.
With the snippet, that work is done in the brain of the programmer when designing the snippet -- MODX just passes the values and assumes that the snippet knows what to do with them. With the output modifier, MODX has to parse the modifier, identify what has to be done, select the particular methods of the modOutputFilter class to do them and then execute all the necessary code.
Output modifiers are relatively inexpensive when doing simple conversions (e.g., date formatting), and not terrible when you have a boolean (yes/no) test, but when it comes to complex conditionals with nested if, then, and else clauses or mathematical calculations, they can get pretty expensive in terms of execution speed and a custom snippet that already knows what you want done and how to do it will almost always be many times faster.
The output modifier system could probably be optimized somewhat (though the code is pretty efficient), but developer resources are scarce and people who need fast operations really shouldn't be using output modifiers in the first place.
If you are using output modifiers and have slow page loads, you can always ask for help here. The odds are good the someone will write you a custom snippet that will be many times faster.
As an aside, this can make MODX appear slow compared to other CMS platforms that don't give you the option of using output modifiers.
Another aside: getResources and a few other extras are somewhat similar. They are all-purpose tools that take time to figure out what you want before doing it and often perform extra tasks that you don't actually need to have done. Storing data in resources and TV and using getResources to display results is always going to be more convenient but slower than alternatives that are optimized for execution speed.
------------------------------------------------------------------------------------------
PLEASE, PLEASE specify the version of MODX you are using.
MODX info for everyone:
http://bobsguides.com/modx.html