Knowledge Base

The performance of Mendix

Recently, I have been busy investigating this. In the process, I came across some remarkable and some not so remarkable things.

I started by figuring out how to connect a local application to external databases and file storage services. Pretty soon I concluded that this is fairly easy to do by changing the runtime configuration settings. But when I had done this, another question popped up: can I find out how ‘good’ such an external database and file storage is?

To find out, I created an application that measures the speed of the database and file storage. This application can also be added as a separate module to an existing application. In this application, I created tests that test the speed, reliability and continuity of the system in different ways. To be precise, it consists of 6 different tests. The first is a load test, it performs small database actions to see what the speed of the database is. The second test is a stress test, it executes small database actions very often in a row, this is to check the continuity. Then we made a durability test, which executes very large database actions to check the reliability and speed. Fourth, we have a volume test that checks the database for varying large and small database actions, again to check continuity. The fifth test is a little different from the rest, it checks how fast the file storage service is by doing different actions with a variable number of documents of variable size. Finally, there is a user test which does not measure speed, but is for the end user to try the speed of the database and file storage themselves. This can be done by creating objects and adding documents and images.

The results that are measured are displayed in nice graphical overviews. By exporting these results, we can easily compare different systems and applications.

Results from local tests

During the research, I also investigated actions that are directly related to developing Mendix. Among others, committing and deleting objects in a list or separated. There was already a suspicion that committing and deleting in a list would be a lot faster than separate and through the application and results, this assertion has been substantiated:

Mendix performance tests - commit and delete

Results of local tests with external database and external file storage

What is striking in the tests with external databases and file storage services is that connecting to an external cloud database causes a lot of speed loss. We see this in all four tests in the diagrams below.

Results of testing on Mendix Cloud and SAP Cloud

Finally, I also tested my application on a production and acceptance environment on the Mendix Cloud and on a created SAP Cloud environment. From this, interesting results came forward, among others that the continuity of the Mendix Cloud still leaves to be desired.

The file storage services of the Mendix Cloud is also inferior to the SAP Cloud.

In summary, this has certainly been an interesting study with some nice results. But there is certainly room for further research and more results! Additions or comments are always welcome. So feel free to send me a message!

Written by Maarten Kroneman
Mendix developer


Let us help you to realise your ambitions