• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Discussion GMS 2.0 vs GMS 1.0, Benchmark

Hello all! Since GM:S 2.0 Beta just came out, I wanted to do some tests concerning performance for all of you who were wondering what the difference would be like.
Please note that I was running background applications during the time – however, these were not closed throughout the test and remained consistent.

PC Specs:
CPU – AMD FX 9590
GPU – EVGA GeForce GTX 970
RAM – 8GB of Crucial RAM at 1600Mhz
Main Drive – Crucial M500 120GB SSD

Constants:
Room speed was 30 in all tests
Background programs open
PC Specifications
Instances/Versions of GMS 1.x and GMS 2.x used

General Compute Performance Test:

Procedure:
Instantiate (X) amount of empty objects with a 64x64 sprite
Wait 5 frames (to offset initial frame drop)
Begin averaging the FPS for 12 seconds (Real-Time, not based on frames)

Results (in average FPS):
X=10,000
GMS 1.0: 226
GMS 2.0: 278

X=20,000
GMS 1.0: 99
GMS 2.0: 113

X=50,000
GMS 1.0: 58
GMS 2.0: 72

Graphics Performance Test:

Procedure:
Draw (X) amount of 64x64 sprites every step
Wait 5 frames (just to keep the procedures more consistent and offset any potential burst drops)
Begin averaging the FPS for 12 seconds (Real-Time, not based on frames)

Results (in average FPS):
X=50,000
GMS 1.0:63
GMS 2.0: 79

X=100,000
GMS 1.0: 33
GMS 2.0: 40


Conclusion:
In every single test we conducted, there was a difference between GMS 1.x and 2.x average frames per second. After averaging the ratios of the General Compute test results, we get an almost exact 20% improvement when using GMS 2.x. After averaging the ratios of the Graphics test results, we get a perfect 23% improvement while using GMS 2.x over GMS 1.x.

I hope you benefited from this in some way – I still can't believe YoYoGames announced it this early!

Best Wishes,
@Seabass (The Human) & @Shadow Gamer

PS:
I may have screwed around with this prior to me closing the projects but the base code should be there for both. Easy way to benchmark what it is capable of.
https://www.dropbox.com/s/vje1wgy1o6dhhw7/GMS Benchmark.zip?dl=0

Collision Benchmarks: https://forum.yoyogames.com/index.php?threads/gms-2-0-vs-gms-1-0-collisions.11927/
 
Last edited:
T

ThunkGames

Guest
Hello all! Since GM:S 2.0 Beta just came out, I wanted to do some tests concerning performance for all of you who were wondering what the difference would be like.
Please note that I was running background applications during the time – however, these were not closed throughout the test and remained consistent.

PC Specs:
CPU – AMD FX 9590
GPU – EVGA GeForce GTX 970
RAM – 8GB of Crucial RAM at 1600Mhz
Main Drive – Crucial M500 120GB SSD

Constants:
Room speed was 30 in all tests
Background programs open
PC Specifications
Instances/Versions of GMS 1.x and GMS 2.x used

General Compute Performance Test:

Procedure:
Instantiate (X) amount of empty objects with a 64x64 sprite
Wait 5 frames (to offset initial frame drop)
Begin averaging the FPS for 12 seconds (Real-Time, not based on frames)

Results (in average FPS):
X=10,000
GMS 1.0: 226
GMS 2.0: 278

X=20,000
GMS 1.0: 99
GMS 2.0: 113

X=50,000
GMS 1.0: 58
GMS 2.0: 72

Graphics Performance Test:

Procedure:
Draw (X) amount of 64x64 sprites every step
Wait 5 frames (just to keep the procedures more consistent and offset any potential burst drops)
Begin averaging the FPS for 12 seconds (Real-Time, not based on frames)

Results (in average FPS):
X=50,000
GMS 1.0: 63
GMS 2.0: 79

X=100,000
GMS 1.0: 33
GMS 2.0: 40


Conclusion:
In every single test we conducted, there was a difference between GMS 1.x and 2.x average frames per second. After averaging the ratios of the General Compute test results, we get an almost exact 20% improvement when using GMS 2.x. After averaging the ratios of the Graphics test results, we get a perfect 23% improvement while using GMS 2.x over GMS 1.x.

I hope you benefited from this in some way – I still can't believe YoYoGames announced it this early!

Best Wishes,
@Seabass (The Human) & @Shadow Gamer
Haha, I was just googling "Game Maker Studio 2 benchmark". I figured there were no tests yet, so I came back here and look what I found! Great stuff, thanks!
 
This is cool. So my DX11 extension for GMS 1 is still considerably faster than GMS 2 (which uses native DX11 itself) - LOL! :D
I would like to point out though, they have a new sprite layer system so you can use sprites similar to how tiles work in GMS 1.x, using the layer system I was able to do 100,000 sprites at 45 fps earlier. I didn't include this info since there isn't a fair comparison to GMS 1.x
 

Llama_Code

Member
I'm finding my work flow is much faster as well. From screen shots I was worried I wouldn't like the UI, but after using it and building a small project, it's pretty intuitive and I can work faster .

Really like the GML only project choice as well. They handled that in a smart way.
 

makas

Member
a nice test would be the tile drawing that yoyo have made clear that it was a bastly improved, maybe random time adding with code or something Im not sure how you can do that, just a suggestion, Im glad we get a performance boost on windows, but I guess is just because we are using dx 11 over dx9, I know is not possible now, but this tests on android or another platforms would be very interesting good job guys
 
R

renex

Guest
100,000 sprites at 45 fps
That's pretty great, considering they are semi-dynamic.

Static graphics are amazingly fast though, I can do 100000 semi-static graphics at 2000 fps using a prototype extension I am developing for 1.X. I suspect the new asset layer and tile systems sit right between a pure vertex buffer solution and dynamic graphics.

I might aswell reboot work on this extension and finish it before it's no longer relevant.
 

Jaqueta

Member
What about collisions?
Could someone test the Old GMS Collision, Fast GMS Collision, and GMS2 Collision (Which is the same as Fast GMS Collision afaik, but...heh)?

I would do it, but I wasn't able to get into beta yet ;-;
 
What about collisions?
Could someone test the Old GMS Collision, Fast GMS Collision, and GMS2 Collision (Which is the same as Fast GMS Collision afaik, but...heh)?

I would do it, but I wasn't able to get into beta yet ;-;
I was considering testing it but there are so many different ways to go about doing collisions that it seems almost pointless to compare. The only major changes as far as I know are the rendering based changes.
 

kupo15

Member
The Fast collision is the a tree based Collision System that YoYo Games implemented recently on GameMaker Studio 1.4, it can be used as an option by enabling it on Global Game Settings.

Since it was completely rewritten, the results may be different than before, but its far more optimal in terms of performance.
different in what way? They briefly mentioned things like instance_place but didn't say how it might be different
 
R

renex

Guest
considerably slower
But you shouldn't be testing an empty room, because low load causes GPUs to underclock themselves.

You can only trust a test that's under load.

If anything, this demonstrates that GMS2 is a little bit more efficient to cause the GPU to justify a power saving mode.

edit - you set room speed to 9999. It might still apply.
 

Juju

Member
Since it was completely rewritten, the results may be different than before, but its far more optimal in terms of performance.
In my adventures optimising Hyper Light Drifter and porting it to 60FPS, we ran into a few of these when switching to FCS. Some of them were oversights on YYG's behalf (and have been fixed afaik) but one of them was quite specific.

instance_place() is rounded in the normal collision system. instance_place() is floored in FCS. It might be the case most collision functions are now floored in GMS2 across the board rather than rounded - I don't know, I haven't checked beyond "yeah, things still work". The change our end as developers is trivial if we want to replicate the old behaviour - round off your coordinates with round().

Rounding off a number isn't free, and for operations that are being done hundreds, if not thousands, of times every frame that all adds up... and the vast number of users will not have any trouble whatsoever with this very slightly different behaviour. FCS being at least an order of magnitude faster than the old system, and it brought 60FPS HLD to way more people than would have been possible otherwise, so I think a little bit of faffing around with
round() is well worth it.
 
Last edited:
R

renex

Guest
Maybe on a laptop. ;)
I do get different results on desktop. I'm developing a full-solution 100+ line shader and my discrete card keeps throwing me off because my game isn't heavy at all, so it underclocks itself to 400 MHz. I've been having more consistent results testing heavy loads like drawing the game 100 times in one step.

My point being, if the runner batching pipeline isn't being used much, results will differ. A simple vertex buffer with a few hundred thousand polys and drawing some 1000 sprites will probably make tests more accurate.
 
The whole GTX 900 series underclocks itself when not underload and not by just a little. A LOT. If I am running a game in the background for example, Game Maker games tend to double or triple 'fps_real'
 
S

Shadow Gamer

Guest
That's a well known GMS bug.

If you run a bunch of GMS created games at the same time, you'll see that they all get 'faster' for each one opened. Do you think that it is really possible to have five full HD games running at 9000 FPS a piece at the same time? No, me either...
I think he's meaning to say he has third-party applications opened, and on instance of his game running.
 
S

Shadow Gamer

Guest
Same effect.

I guarantee that the framerate of the third party applications take a huge dive too (if they are able to report the frame counter). GMS Bug.
I thought you said the bug only appeared with GMS compiled applications?
 
Run two instances of Crysis and you wont see it double or triple in framerate ;)
No GMS does not get a framerate boost but it does see that the CPU/GPU has more available resources (or so I'd think). That applies to any application using less than it requires. Playing Crysis fully utilizes the GPU in most cases (if vsync is off). GMS games cap at room_speed and don't run on delta time generally. For the sake of these tests, delta time was not used in any of the testing.
 
Top