Subscribe: RSS
  • I’ve spent the last couple days benchmarking these two systems.

    I ran the benchmarks from the same server.

    • Quad core LAMP setup
    • 2GB RAM
    • Xcache
    • mod_deflate

    The database was about the same size in both tests with similar row counts.

    • ~13MB with ~3000 resources/documents

    I created specific benchmarking pages that pulled similar data.

    • ~12 documents from DB/cache totaling ~53KB
    • ~7 template variables (or in EE, channel fields)
    • ~500KB JS + CSS
    • ~300KB images

    I had one extra snippet installed for the MODx benchmark (WayFinder) and had removed all modules from the EE benchmark except the Channel module.

    MODx was configured to utilize caching options. ExpressionEngine was configured to use query caching, tag caching, and template caching.

    In multiple test across varying concurrency, my results remained similar:

    ----
    [table]
    [tr][td]ExpressionEngine[/td][td]10 requests per second[/td][/tr]
    [tr][td]MODx[/td][td]21 requests per second[/td][/tr]
    [/table]
    ----

    I should note that I enjoyed using ExpressionEngine, and would be glad to use it again in the future. I thought it was relitively easy to learn and use. It has amazing documentation and support, and is built on my favorite PHP framework (Code Igniter).

    Disclaimer: My benchmark platforms were not perfect (as should be denoted by my repetitive use of the ~ symbol), but I believe it to be a decent result set. I just thought sharing this info may be helpful to someone.
    • That’s really interesting. Would really love to see that with Wordpress, CMSMS, Joomla and Drupal too.
        Ryan Thrash, MODX Co-Founder
        Follow me on Twitter at @rthrash or catch my occasional unofficial thoughts at thrash.me
      • Question: was this for MODx Evolution or Revolution?

        Also, did removing Wayfinder affect the benchmark much? My guess is that it would.

        And what do you mean by "MODx was configured to utilize caching options"? Was cache_db on?
          shaun mccormick | bigcommerce mgr of software engineering, former modx co-architect | github | splittingred.com
        • The test was for Revolution.

          Taking out my WayFinder call added about 2 RPS
          [[Wayfinder? &startId=`0` &level=`2` &parentClass=`parent` &outerClass=`menu`]]

          Note: as you can see WF is only calling 2 levels deep. I have 7 top containers with ~7-14 secondary containers each.

          My MODx caching settings are:

          [table]
          [tr]
          [td]Setting[/td][td]Key[/td][td]Value[/td]
          [/tr]
          [tr]
          [td]Enable Action Map Cache[/td]
          [td]cache_action_map[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Enable Context Setting Cache[/td]
          [td]cache_context_settings[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Enable Database Cache[/td]
          [td]cache_db[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Expiration Time for DB Cache[/td]
          [td]cache_db_expires[/td]
          [td]0[/td]
          [/tr]
          [tr]
          [td]Cacheable default[/td]
          [td]cache_default[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Disable Global Cache Options[/td]
          [td]cache_disabled[/td]
          [td]No[/td]
          [/tr]
          [tr]
          [td]Expiration Time for Default Cache[/td]
          [td]cache_expires[/td]
          [td]0[/td]
          [/tr]
          [tr]
          [td]Caching Handler Class[/td]
          [td]cache_handler[/td]
          [td]xPDOFileCache[/td]
          [/tr]
          [tr]
          [td]Cache JSON Data[/td]
          [td]cache_json[/td]
          [td]No[/td]
          [/tr]
          [tr]
          [td]Expiration Time for JSON Cache[/td]
          [td]cache_json_expires[/td]
          [td]0[/td]
          [/tr]
          [tr]
          [td]Cache Lexicon JS Strings[/td]
          [td]cache_lang_js[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Cache Lexicon Topics[/td]
          [td]cache_lexicon_topics[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Cache Non-Core Lexicon Topics[/td]
          [td]cache_noncore_lexicon_topics[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Enable Partial Resource Cache[/td]
          [td]cache_resource[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Expiration Time for Partial Resource Cache[/td]
          [td]cache_resource_expires[/td]
          [td]0[/td]
          [/tr]
          [tr]
          [td]Enable Script Cache[/td]
          [td]cache_scripts[/td]
          [td]Yes[/td]
          [/tr]
          [tr]
          [td]Enable System Setting Cache[/td]
          [td]cache_system_settings[/td]
          [td]Yes[/td]
          [/tr]
          [/table]

          :D
          • Nice job Bo!!

            Thinking outside the box for sure!! (i like that)...We strived that methodology with Borland, MicroShaft...didn’t care smiley

            Be sure to compare images etc...while testing also?

            Jim
            • Can you clarify what this really represents? Are you talking about the maximum of requests that the application handled per second as in an Apache AB test? I’d love to set up something similar with WordPress and Drupal... as soon as I win the Time Lottery and the Free-time jackpot...
              • Quote from: Everett at Nov 24, 2010, 02:37 AM

                Can you clarify what this really represents? Are you talking about the maximum of requests that the application handled per second as in an Apache AB test? I’d love to set up something similar with WordPress and Drupal... as soon as I win the Time Lottery and the Free-time jackpot...

                Yes, Apache AB.

                It did take some time but it was necessary data for us. Plus it helped get me more acquainted with MODx Revo and ExpressionEngine. I figured I would enjoy ExpressionEngine (and I did).

                Someone else will need to do the Drupal bench tongue
                • Bo, may I ask..upon the ’server’ total specs? The tests were "exposed" to please?

                  Jim