Auto compiler optimalisation?

BlitzMax Forums/BlitzMax Beginners Area/Auto compiler optimalisation?

Philip7(Posted 2008) [#1]
I'm making a Space Invaders Clone. Yes, thank you, it's very original, i know :)
Im my Update() i restrict the player (the image of the player) to remain inside the screen. Now because i dont want half the ship to be offscreen i make a margin on x with the width of the player image.

What i'm wondering is, is every call of Update() going to recalculate the width of the image and if so, should i define it once as a constant variable in the constructor of the player to save cpu-time or does the compiler optimize these kind of recuring calculations for me?

Type TPlayer Extends TGameObject

	Function Create:TPlayer(px:Int, py:Int, pspeed:Int, pimg:String)
		Local P:TPlayer = New TPlayer
		P.x = px
		P.y = py
		P.speed = pspeed
		P.img = LoadImage(pimg) 
		ListAddLast GameObjectList, P
		Return P
	End Function	

	Method Update() 
		If Self.x < ImageWidth(Self.img)/2 ; x = ImageWidth(Self.img)/2
		If Self.x > ScreenWidth - (ImageWidth(Self.img)/2); x = ScreenWidth - (ImageWidth(Self.img)/2)
	End Method	

End Type



Brucey(Posted 2008) [#2]
As per the source :
Function ImageWidth( image:TImage )
	Return image.width
End Function

where image.width is defined as follows :
Type TImage Extends TData

	Field width,height,flags
....


So, no. It won't recalculate.


Philip7(Posted 2008) [#3]
Okay, so when the image is loaded BlitzMax calculates the image width and height once into it's own internal variable and i'm just asking for that variable every time. It doesn't actually count the pixels every time.

Thanx Brucey


ImaginaryHuman(Posted 2008) [#4]
Right, it doesn't even count pixels the first time it loads the image, it gets the dimensions which are stored in the file already as part of the file-loader. There is no pixel counting, but it would still be productive to define Local variables holding the dimensions rather than using function calls each time.


Brucey(Posted 2008) [#5]
Although a function call time is pretty insignificant, I would imagine ?


dmaz(Posted 2008) [#6]
yes they are... I wouldn't worry about it... that will not be where you need to optimise.