Brad Wood talks about “How is CFML speed vs other languages? (Hint: really fast!)” in this episode of ColdFusion Alive Podcast with host Michaela Light.
“…It is freaking awesome to see CFML (both Lucee and Adobe) blowing the pants off other popular web frameworks. I think this sort of head-to-head comparison is great information to use when defending CFML as a battle-tested production server…”
- Show notes
- Why compare language performance?
- Other ways to compare programming languages
- What are the TechEmpower performance benchmarks that you used in your testing?
- What languages did you compare?
- Size of CF Docker image
- How did CFML perform?
- Languages compared:
- Open source involvement
- CommandBox database migration layer
- Wrap up
- Mentioned in this episode
Why compare language performance?
- It is freaking awesome is it to see CFML (both Lucee and Adobe) blowing the pants off other popular web frameworks. I think this sort of head-to-head comparison is great information to use when defending CFML as a battle-tested production server. (results and tests below).
Other ways to compare programming languages
- Modern development ecosystem
- Libraries and frameworks
- Modern language
- Ease of coding (writing and reading)
- Ease of learning
- Connection to other systems and APIs
- Manufacturer and community there for the long term + support
- Ease of hiring
- App reliability
- Fashion / what is hot / new
What are the TechEmpower performance benchmarks that you used in your testing?
- The benchmarks have a suite of tests, such as run 20 queries on a page and output some data, and every language and framework implements the same logic in their syntax and style. The tests literally take days to run in full and spin up each combination of language and framework in docker containers where they are hammered with oodles of traffic and then the juicy stats are recorded for sweet graphical comparisons.
- Since 2012 in EC2, now in Docker containers. Open source.
- The site is basically information overload. There’s just dozens and dozens of combinations of languages, frameworks, databases, web servers, etc– and many of them are crazy fast micro frameworks you’ve never heard of which are pretty cool. You can apply a huge list of filters to try and carve down the list of frameworks to a useful size of equivalent ones.
- See results
- Not all the test results are the same. Play around with the site to compare your favorite languages and see how they hold up in the simple hello world tests vs the heavy lifting DB tests. I’ve stacked the cards a bit in my selections above, but I think it’s more indicative of a real world web app if we’re honest.
What languages did you compare?
- Brad added the following to the site a year or so ago:
- Raw Lucee server
- Raw Adobe ColdFusion server
- ColdBox MVC running on Lucee
- ColdBox MVC running on Adobe ColdFusion
- All the famous languages: CF, PHP, Python, Go, RoR, Grails etc
- What about front ends such as React, Angular, Vue?
- What about Java (SpringBoot), WP, dotNot, Cloture
Size of CF Docker image
- Doesn’t matter for this test
- May matter for clustered Docker solutions with orchestration
How did CFML perform?
Let me be the first to say Brad’s filters are pretty arbitrary. CFML does better on more complex pages with more queries than other languages. That’s because it’s got a little more overhead for a simple Hello World request (we’re talking ms here) but it’s JVM concurrency and datasource connection pooling really shine on a more complex test. As such, the link and screenshot above is for the “Data Updates” test
- Go is very fast. This is no surprise as Go is designed to be as small as possible and even discourages use of frameworks all together. I couldn’t get the filter to only show one of the Go configurations, but you can see it’s the only language that was as fast or faster than CFML in this test!
- CFML basically came in second place out of the selected languages and frameworks. Raw CFML is faster than ColdBox as expected but it’s not a massive difference.
- Node.js came in slower than both raw CFML and ColdBox MVC
- Groovy (Grails) came in slower than both raw CFML and ColdBox MVC
- Ktor jasync (Kotlin) came in slower than both raw CFML and ColdBox MVC
- Ruby on Rails came in slower than both raw CFML and ColdBox MVC
- Laravel (PHP) came in slower than ColdBox MVC which it is equivalent to.
- There’s a million PHP frameworks, I picked this one because I know it’s very popular and modern.
- Django (Python) came in dead last by a long shot (4x slower than CFML!)
Open source involvement
- Star the repo – a like
- Watch – a subscribe
- Fork / Pull request – bug fixes and enhancements
- Do your first pull request cocompetition
- Edit/Add docs
CommandBox database migration layer
- State of CF Union survey results show that speed is never an issue for modern CF code
- neither are security, upgrading or tools
Mentioned in this episode
- Brads blog on this How does CFML really perform compared to other languages? – Communities – Ortus Solutions Community
- if you’d like to see the code and Docker setup, feel free to poke around the repo
- Adobe ColdFusion
- Is CF dead article
- State of CF Union survey results
- CommandBox database migration layer – talk by Brad
- CF most Secure language
Brad grew up in southern Missouri and after high school majored in Computer Science with a music minor at MidAmerica Nazarene University (Olathe, KS). Today he lives in Kansas City with his wife and three girls. Brad enjoys all sorts of international food and the great outdoors. Brad has been programming ColdFusion since around 2002 and has used every version of CF since 4.5. He is a software engineer at Ortus Solutions, lead developer of CommandBox CLI, and open source contributor.
- CFML Slack Box Channel
- Box Team Slack Channel
- Brad's Website
- Brad Wood | LinkedIn
- Ortus Community Forum
- Techempower Nightly Builds
Michaela Light 0:02
Welcome back to the show everyone. I'm here with the famous Brad wood of command box lineage. But we're gonna be talking today about programming language speed, because Brad ran a very interesting set of speed tests on a public site, which we're going to look into. And I'm gonna get let the cat out of the bag. ColdFusion did really, really well in the speed comparisons to other languages. But we'll go into the details of that later. If you don't know Brad, not only did he create command box and he's like one of the ninjas autists solutions, but he lives in Kansas on the Kansas City in the Kansas side, not the Missouri side even though he grew up in Missouri, you kind of trade sides. I think
Brad Wood 0:48
I came to college here interstate.
Michaela Light 0:50
Ah, there you go. And he's been programming cold fusion for 20 years now. So you get the special award for that.
Michaela Light is the host of the CF Alive Podcast and has interviewed more than 100 ColdFusion experts. In each interview, she asks "What Would It Take to make CF more alive this year?" The answers still inspire her to continue to write and interview new speakers.
Michaela has been programming in ColdFusion for more than 20 years. She founded TeraTech in 1989. The company specializes in ColdFusion application development, security and optimization. She has also founded the CFUnited Conference and runs the annual State of the CF Union Survey.