FS#1074 - Large slowdown when building tracks

Attached to Project: OpenTTD
Opened by Bilbo (bilbo) - Tuesday, 24 July 2007, 17:44 GMT
Last edited by Remko Bijker (Rubidium) - Friday, 16 November 2007, 15:49 GMT
Type Bug
Category Core
Status Closed
Assigned To No-one
Operating System All
Severity Very Low
Priority Low
Reported Version trunk
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


In r10649.

Load attached savegame (2048 x 64). Zoom main view on "point 1" sign and exra view on "Point 2" sign

Build straight road by connectiong the two pieces - it is done instantly
Build straight railroad track by connection the two railroad pieces - on Athlon 3000+ it needs about 4 seconds and OpenTTD is not reasponding in the time.

Now bulldoze the road you've just build - it is done instantly
If you bulldoze the railroad segment, it needs about 2 seconds.

Seems that something is seriously slowing down operations involving railroad tracks. Building signals need also 2 secs for that distance, while convertiong between railroad types (classic <-> monorail) is instant on 2048 tiles long track segment.
This task depends upon

Closed by  Zdeněk Sojka (SmatZ)
Wednesday, 16 January 2008, 01:18 GMT
Reason for closing:  Fixed
Additional comments about closing:  In r11871
Comment by Remko Bijker (Rubidium) - Wednesday, 25 July 2007, 17:37 GMT
That is caused by the need for updating the signal blocks; you do not want green signals when there already might be a train in that block when you intersect other pieces of rail. For some reason that is done for every tile which might be a little too much, but I've got knowledge of the signalling system so I do not know.

Same holds for removing tracks or adding/removing signals; you do not want signal blocks have red signals when there is no train in the next block as that will cause trains to be stopped indefinitely.
Comment by Peter Nelson (peter1138) - Thursday, 02 August 2007, 16:21 GMT
Hmm, only one signal update is needed for placing the long track. For removing tracks a signal update is only needed if the removed track intersects a left-over piece.