Performance optimization - post your saves

Post all other topics which do not belong to any other category.

Re: Performance optimization - post your saves

Postby Rseding91 » Mon Nov 13, 2017 10:17 am

sillyfly wrote:
Rseding91 wrote: ... it may help slightly ... takes half the time ...


Wube's optimization philosophy - saving 50% is only a slight improvement :D :D
Keep up the excellent work guys.


I actually found some additional things right after I said that so now in 0.16 it's around 280% faster. In 0.15 it takes 10 MS of prepare time and in 0.16 it takes 3.5 MS of prepare time.
If you want to get ahold of me I'm almost always on IRC and Discord.
Rseding91
Factorio Staff
Factorio Staff
 
Posts: 6197
Joined: Wed Jun 11, 2014 5:23 am

Re: Performance optimization - post your saves

Postby Koub » Mon Nov 13, 2017 2:33 pm

Rseding91 wrote:I actually found some additional things right after I said that so now in 0.16 it's around 280% faster.

280% faster ! We are now able to reverse time \o/ :mrgreen:
Koub - Please consider English is not my native language.
Koub
Global Moderator
Global Moderator
 
Posts: 2832
Joined: Fri May 30, 2014 8:54 am
Location: France

Re: Performance optimization - post your saves

Postby Mimos » Mon Nov 13, 2017 2:45 pm

Rseding91 wrote:I actually found some additional things right after I said that so now in 0.16 it's around 280% faster. In 0.15 it takes 10 MS of prepare time and in 0.16 it takes 3.5 MS of prepare time.


Thanks, that sounds good :-)
Mimos
Inserter
Inserter
 
Posts: 40
Joined: Mon Nov 07, 2016 5:15 pm

Re: Performance optimization - post your saves

Postby JamelBF » Mon Nov 13, 2017 5:58 pm

Rseding91 wrote:
sillyfly wrote:
Rseding91 wrote: ... it may help slightly ... takes half the time ...


Wube's optimization philosophy - saving 50% is only a slight improvement :D :D
Keep up the excellent work guys.


I actually found some additional things right after I said that so now in 0.16 it's around 280% faster. In 0.15 it takes 10 MS of prepare time and in 0.16 it takes 3.5 MS of prepare time.

Thanks.Very useful.
If 0.16 it takes 3.5MS.
How you think about 0.17?Can you share your test please :)
User avatar
JamelBF
Manual Inserter
Manual Inserter
 
Posts: 1
Joined: Mon Nov 13, 2017 5:52 pm

Re: Performance optimization - post your saves

Postby Rseding91 » Mon Nov 13, 2017 6:21 pm

Koub wrote:
Rseding91 wrote:I actually found some additional things right after I said that so now in 0.16 it's around 280% faster.

280% faster ! We are now able to reverse time \o/ :mrgreen:


Not this again... it all depends how you calculate %. If it's current time / old time or old time / current time.

10 MS / 3.5 MS = you can do 3.5 MS 2.8 times (280% of the work that's done now could be done before it reaches the time spent before) or you calculate it as 3.5 MS / 10 MS = it takes only 35% as much time as it did before.

No matter which is used someone expecting the other form makes some joke about it not being possible to get that number.
If you want to get ahold of me I'm almost always on IRC and Discord.
Rseding91
Factorio Staff
Factorio Staff
 
Posts: 6197
Joined: Wed Jun 11, 2014 5:23 am

Re: Performance optimization - post your saves

Postby Rseding91 » Mon Nov 13, 2017 6:27 pm

JamelBF wrote:Thanks.Very useful.
If 0.16 it takes 3.5MS.
How you think about 0.17?Can you share your test please :)


I was simply mousing over the blueprint in the quickbar with the show-time-used debug option enabled.
If you want to get ahold of me I'm almost always on IRC and Discord.
Rseding91
Factorio Staff
Factorio Staff
 
Posts: 6197
Joined: Wed Jun 11, 2014 5:23 am

Re: Performance optimization - post your saves

Postby Mimos » Tue Nov 14, 2017 5:19 pm

Rseding91 wrote:10 MS / 3.5 MS = you can do 3.5 MS 2.8 times (280% of the work that's done now could be done before it reaches the time spent before) or you calculate it as 3.5 MS / 10 MS = it takes only 35% as much time as it did before.


But isn't it 180% faster then? Or 280% as fast? ;)
Mimos
Inserter
Inserter
 
Posts: 40
Joined: Mon Nov 07, 2016 5:15 pm

Re: Performance optimization - post your saves

Postby mrvn » Mon Nov 20, 2017 12:01 pm

Mimos wrote:Factorio 15.37
I encountered significant slowdowns when using large blueprints. Both just mouseovering the blueprint item and also moving the ghost over the map. It causes a lot less slowdown if it is built and in operation.
Single player, empty map:
    Mouseover zoomed in: fps drop (60 to 50), ups ok.
      Render preparation/Gui render preparation going up to 13 from 0.5/0.1
      Render/Gui render going up to 6/5 from 0.5/0.1
    Mouseover zoomed out: fps drop (60 to 40), ups ok.
      Render preparation/Gui render preparation going up to 14 from 1.5/0.1
      Render/Gui render going up to 9/5 from 3.8/0.1
    Placing it zoomed in: fps drop (60 to 40), ups ok.
      Render preparation/Game render preparation going up to 21 from 0.5/0.3
      Render/Game render going up to 3.7/3.5 from 0.8/0.7
    Placing it zoomend out: fps drop (60 to 30), ups ok.
      Render preparation/Game render preparation going up to 24 from 1.6/1.4
      Render/Game render going up to 6.8/6.7 from 3.7/3.6

Multiplayer, big, slow factory, me being the server:
    for me: fps and ups drop from about 40 to 20.
    other players (having faster pcs): unplayable, hardly reacting to inputs.

large blueprint.txt


Maybe you can somehow speed up blueprints to have about the same speed as real buildings.


And now place the blueprint. You get a nice "Server is not responding" message while the server places the blueprint.

By the way: Why does other peoples client become unresponsive, not starting to move when you press a key, not stopping when you release a key, when one players system is busy with something? The client should send something like this to the server: "Player pressed w at tick X, player released w at tick Y." The client should not become totally unresponsive just because the FPS/UPS dropped a bit.
mrvn
Smart Inserter
Smart Inserter
 
Posts: 1138
Joined: Mon Sep 05, 2016 9:10 am

Re: Performance optimization - post your saves

Postby Gnark » Mon Nov 20, 2017 8:33 pm

Hi,

I really like my game but this is now significantly dropping on FSP.
Do you know what I can do to keep going with this save ?

Thanks a lot.
Attachments
Game post 0.15 avec Gab.zip
(40.05 MiB) Downloaded 4 times
Gnark
Inserter
Inserter
 
Posts: 24
Joined: Tue Oct 18, 2016 10:15 am

Re: Performance optimization - post your saves

Postby Rseding91 » Mon Nov 20, 2017 11:28 pm

Gnark wrote:Hi,

I really like my game but this is now significantly dropping on FSP.
Do you know what I can do to keep going with this save ?

Thanks a lot.



You simply have a ton of belts. There's nothing new in that to optimize - if you want it to run faster you just can't build that much.
If you want to get ahold of me I'm almost always on IRC and Discord.
Rseding91
Factorio Staff
Factorio Staff
 
Posts: 6197
Joined: Wed Jun 11, 2014 5:23 am

Re: Performance optimization - post your saves

Postby Gnark » Tue Nov 21, 2017 1:04 pm

Rseding91 wrote:
Gnark wrote:Hi,

I really like my game but this is now significantly dropping on FSP.
Do you know what I can do to keep going with this save ?

Thanks a lot.



You simply have a ton of belts. There's nothing new in that to optimize - if you want it to run faster you just can't build that much.


Thanks for looking at it. If I replace somme belt with underground one ... will it help ?
I want to keep a belt factorie and not a robot one.
Gnark
Inserter
Inserter
 
Posts: 24
Joined: Tue Oct 18, 2016 10:15 am

Re: Performance optimization - post your saves

Postby Jap2.0 » Tue Nov 21, 2017 5:55 pm

Gnark wrote:
Rseding91 wrote:
Gnark wrote:Hi,

I really like my game but this is now significantly dropping on FSP.
Do you know what I can do to keep going with this save ?

Thanks a lot.



You simply have a ton of belts. There's nothing new in that to optimize - if you want it to run faster you just can't build that much.


Thanks for looking at it. If I replace somme belt with underground one ... will it help ?
I want to keep a belt factorie and not a robot one.


That will help. There are also tons of belt optimizations in 0.16.
There are 10 types of people: those who get this joke and those who don't.
Jap2.0
Filter Inserter
Filter Inserter
 
Posts: 657
Joined: Tue Jun 20, 2017 12:02 am

Re: Performance optimization - post your saves

Postby Xeteth » Wed Nov 22, 2017 9:45 am

Found something new that absolutely tanked my FPS/UPS today.

I am making a 'Coal Bunker' which has a ton of storage chests - when I hold the blueprint in hand ready to place it my FPS/UPS takes a massive hit. It seems the slow down is caused under "Game Render Preparation".

The map otherwise works at 60/60.

PIC
Image


BP STRING
Code: Select all
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
Xeteth
Fast Inserter
Fast Inserter
 
Posts: 150
Joined: Tue Feb 17, 2015 6:06 am

Re: Performance optimization - post your saves

Postby mrvn » Wed Nov 22, 2017 10:11 am

Xeteth wrote:Found something new that absolutely tanked my FPS/UPS today.

I am making a 'Coal Bunker' which has a ton of storage chests - when I hold the blueprint in hand ready to place it my FPS/UPS takes a massive hit. It seems the slow down is caused under "Game Render Preparation".

The map otherwise works at 60/60.


Blueprints have to check every entity to see if there is something beneath it that conflicts or needs to be deconstructed (with shift pressed). It can probably be optimized (e.g. pre-compute a single mask where trees need to be deconstructed instead of checking per entity) but as is a render slowdown isn't surprising.
mrvn
Smart Inserter
Smart Inserter
 
Posts: 1138
Joined: Mon Sep 05, 2016 9:10 am

Re: Performance optimization - post your saves

Postby Rseding91 » Wed Nov 22, 2017 11:13 am

mrvn wrote:
Xeteth wrote:Found something new that absolutely tanked my FPS/UPS today.

I am making a 'Coal Bunker' which has a ton of storage chests - when I hold the blueprint in hand ready to place it my FPS/UPS takes a massive hit. It seems the slow down is caused under "Game Render Preparation".

The map otherwise works at 60/60.


Blueprints have to check every entity to see if there is something beneath it that conflicts or needs to be deconstructed (with shift pressed). It can probably be optimized (e.g. pre-compute a single mask where trees need to be deconstructed instead of checking per entity) but as is a render slowdown isn't surprising.


That part of the logic is actually minimal. It's the copying of the blueprint in hand, adjusting it to the correct world position, rotating every entity, setting each entity up, and then destroying each one after it's rendered that takes the majority of the time.
If you want to get ahold of me I'm almost always on IRC and Discord.
Rseding91
Factorio Staff
Factorio Staff
 
Posts: 6197
Joined: Wed Jun 11, 2014 5:23 am

Re: Performance optimization - post your saves

Postby Jap2.0 » Wed Nov 22, 2017 5:49 pm

Rseding91 wrote:
mrvn wrote:
Xeteth wrote:Found something new that absolutely tanked my FPS/UPS today.

I am making a 'Coal Bunker' which has a ton of storage chests - when I hold the blueprint in hand ready to place it my FPS/UPS takes a massive hit. It seems the slow down is caused under "Game Render Preparation".

The map otherwise works at 60/60.


Blueprints have to check every entity to see if there is something beneath it that conflicts or needs to be deconstructed (with shift pressed). It can probably be optimized (e.g. pre-compute a single mask where trees need to be deconstructed instead of checking per entity) but as is a render slowdown isn't surprising.


That part of the logic is actually minimal. It's the copying of the blueprint in hand, adjusting it to the correct world position, rotating every entity, setting each entity up, and then destroying each one after it's rendered that takes the majority of the time.



Do you really have to do that every tick? Would it be possible to only destroy and replace the items if you move the blueprint, and only change the orientation if you rotate the blueprint?
There are 10 types of people: those who get this joke and those who don't.
Jap2.0
Filter Inserter
Filter Inserter
 
Posts: 657
Joined: Tue Jun 20, 2017 12:02 am

Re: Performance optimization - post your saves

Postby Xeteth » Thu Nov 23, 2017 6:00 am

Rseding91 wrote:
mrvn wrote:
Xeteth wrote:Found something new that absolutely tanked my FPS/UPS today.

I am making a 'Coal Bunker' which has a ton of storage chests - when I hold the blueprint in hand ready to place it my FPS/UPS takes a massive hit. It seems the slow down is caused under "Game Render Preparation".

The map otherwise works at 60/60.


Blueprints have to check every entity to see if there is something beneath it that conflicts or needs to be deconstructed (with shift pressed). It can probably be optimized (e.g. pre-compute a single mask where trees need to be deconstructed instead of checking per entity) but as is a render slowdown isn't surprising.


That part of the logic is actually minimal. It's the copying of the blueprint in hand, adjusting it to the correct world position, rotating every entity, setting each entity up, and then destroying each one after it's rendered that takes the majority of the time.


I know large blueprints cause performance problems however I thought I'd post this one in particular because for whatever reason it seems to absolutely nuke FPS/UPS compared to other ones. I obviously have no idea how this is all done and whether it's based off the entity count or not but I can blueprint builds that have 3-4 times the number of entities without such a performance drop. Perhaps it's something to do with the storage chest entity or something?
Xeteth
Fast Inserter
Fast Inserter
 
Posts: 150
Joined: Tue Feb 17, 2015 6:06 am

Previous

Return to General discussion

Who is online

Users browsing this forum: Bing [Bot] and 22 guests