### Author Topic: No fix for ghost collisions with planet eaters necissary  (Read 2740 times)

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #15 on: January 26, 2014, 11:04:10 AM »
Just ran sleepy again with your method:

That eyestrength thing is indeed eating up a lot. Numsgil, here is the code for eyestrength, any idea how to make it faster? It is supposed to trow a Boolean and revert to 1.

Code: [Select]
`0.25s Private Function eyestrength(n1 As Integer) As Single 'Botsareus 2/3/2013 eye strength mod Const EyeEffectiveness As Byte = 3  'Botsareus 3/26/2013 For eye strength formula If SimOpts.Pondmode And rob(n1).pos.y > 1 Then 'Botsareus 3/26/2013 Bug fix if robot Y pos is almost zero   eyestrength = (EyeEffectiveness / (rob(n1).pos.y / 2000) ^ SimOpts.Gradient) ^ (6828 / SimOpts.FieldHeight)  'Botsareus 3/26/2013 Robots only effected by density, not light intensity Else0.02s   eyestrength = 1 End If 0.02s If Not SimOpts.Daytime Then eyestrength = eyestrength * 0.8 0.03s If eyestrength > 1 Then eyestrength = 1 End Function`
This is called from all over the place in the buckets module such as:

Code: [Select]
`'Returns the distance an eye of absolute width w can see.'Eye sight distance S varies as a function of eye width according to:  S =  1 - ln(w)/4'where w is the absolute eyewidth as a multiple of the standard Pi/18 eyewidthsPublic Function EyeSightDistance(w As Integer, n1 As Integer) As Single 'Botsareus 2/3/2013 modified to except robot id  If w = 35 Then    EyeSightDistance = 1440 * eyestrength(n1)  Else    EyeSightDistance = 1440 * (1 - (Log(w / 35) / 4)) * eyestrength(n1)  End IfEnd Function`
Good find btw.

#### Numsgil

• Bot God
• Posts: 7715
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #16 on: January 26, 2014, 01:39:17 PM »
It looks like most of the expense is the overhead of calling a function.  What does the callstack look like?

Basically, you should probably only ever need to call this once per bot per cycle.  If it's getting called more than that, that would be the issue.  You want to cache the values you get for each bot instead of recalculating them.

This is one of those cases where there's not much you can do to speed up the function itself, so you have to figure out ways to call it less frequently.

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #17 on: January 26, 2014, 06:30:06 PM »
Ok, I'll play with it, see what I can come up with. It does not look too promising though. If I get a reasonable speed improvement expect a revision drop soon.

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #18 on: January 28, 2014, 10:44:58 AM »
Nah, did not help a bit, My speed is exactly the same if I declare eyestrength in robot structure (and stuff) or I do not.
« Last Edit: January 28, 2014, 11:02:43 AM by Botsareus »

#### Numsgil

• Bot God
• Posts: 7715
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #19 on: January 28, 2014, 11:27:24 AM »
That must not have been the bottleneck then :/

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #20 on: January 28, 2014, 11:42:24 AM »
It is not that bad Numsgil, I think we can live with 20% slower code... I am thinking it is the combination of all the new mods together, and there is no specific bottleneck... Thanks for your help, at least I learned proper bottleneck finding skills using a profiler from this experiment.

#### Peter

• Bot God
• Posts: 1177
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #21 on: January 28, 2014, 05:32:23 PM »
No specific bottleneck is weird. Uniform slow code is rare.
Oh my god, who the hell cares.

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #22 on: January 29, 2014, 02:04:59 PM »
I can not find anything. Trust me, I looked. All the functions I looked at are taking as much % as I expect them to take. Also, I can not find any that I can optimize to be faster.

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #23 on: February 11, 2014, 11:43:58 AM »
Numsgil, I found something very interesting. Apparently "readtie" was excepting the counter from UpdateBots byref and then changing it. Causing the loop to repeat or even hang with half the loop never being executed. Very ugly. Fixed. I hope this one improves speed.

#### Botsareus

• Society makes it all backwards - there is a good reason for that
• Bot God
• Posts: 4483
##### Re: No fix for ghost collisions with planet eaters necissary
« Reply #24 on: February 14, 2014, 03:31:55 PM »
Wow, I put byvals everywhere it was safe to do and the program is flying now.