Comparison with PHP GbxRemote
Most popular controllers use the PHP version of the GbxRemote. This is included in the dedicated server package and most often the starting point of a (new) controller. It’s up to the C++ controller/library to at least stand up to this library. To check this out, a series of tests have been executed.
The tests are run in the same environment and executed after eachother. It is reasonable to suspect OS or other activity to delay the execution of the tests. Results that were significantly higher than average have been removed for that purpose. The results are not exact science, but only give an indication.
Retrieving map list remotely
In this scenario both set-ups create a connection remotely (from inside the development-VM) to the production server the testserver is running on. The connection is 70 Mbps down/60 Mbps up and is stable around 16.3ms ping. This is about retrieving the data and convert it to usable arrays/structs (no conversion to a map object is executed). The maplist contains 812 maps.
C++ (Mania++) | PHP (GbxRemote) | |
OS | Ubuntu 16.10 64-bit | |
Kernel | Linux 4.8.0-30 | |
Compiler | GCC 6.2.0 | PHP 7.0.8 |
#1 | 1.60555 sec. | 1.62182 sec. |
#2 | 1.60041 sec. | 1.59549 sec. |
#3 | 1.60527 sec. | 1.60514 sec. |
#4 | 1.60996 sec. | 1.59953 sec. |
#5 | 1.60145 sec. | 1.65126 sec. |
Total | 8.02264 sec. | 8.07324 sec. |
Average | 1.60453 sec. | 1.61465 sec. |
Difference | 0.01012 sec. in favour of Mania++ |
Retrieving map list locally
This scenario is similar to the previous one, except that in this one the controller(s) are connecting locally, removing the networking-factor from the equation. Both language/compiler versions are older as this test is executed on a production server and software versions usually lag behind in that case. Note though that both versions are the latest available (in the series, f.e. PHP 5).
C++ (Mania++) | PHP (GbxRemote) | |
OS | Debian 8.6 | |
Kernel | Linux 3.16.0-4 | |
Compiler | GCC 4.9.2 | PHP 5.6.27 |
#1 | 1.50472 sec. | 1.71565 sec. |
#2 | 1.53870 sec. | 1.65651 sec. |
#3 | 1.53649 sec. | 1.66803 sec. |
#4 | 1.47690 sec. | 1.71096 sec. |
#5 | 1.52664 sec. | 1.67395 sec. |
Total | 7.58345 sec. | 8.42510 sec. |
Average | 1.51669 sec. | 1.68502 sec. |
Difference | 0.16833 sec. in favour of Mania++ |
Retrieving map list remotely + convert to object
This scenario is simliar to the first one. The maplist is retrieved from a remote server, but is then converted in a vector/array with Map objects. The objects contain the same properties and the same assignments.
C++ (Mania++) | PHP (GbxRemote) | |
OS | Ubuntu 16.10 64-bit | |
Kernel | Linux 4.8.0-30 | |
Compiler | GCC 6.2.0 | PHP 7.0.8 |
#1 | 1.64491 sec. | 1.76379 sec. |
#2 | 1.58829 sec. | 1.70859 sec. |
#3 | 1.63636 sec. | 1.60899 sec. |
#4 | 1.63550 sec. | 1.65823 sec. |
#5 | 1.60827 sec. | 1.71082 sec. |
Total | 8.11333 sec. | 8.45042 sec. |
Average | 1.62267 sec. | 1.69008 sec. |
Difference | 0.06741 sec. in favour of Mania++ |