AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Question about optimization (https://forums.alliedmods.net/showthread.php?t=293658)

grs4 02-06-2017 12:33

Question about optimization
 
What is better to keep data in entity and what is faster?

PHP Code:

#define EV_INT_turret_index         EV_INT_iuser1
#define EV_INT_turret_type         EV_INT_iuser2
#define EV_INT_turret_firemode         EV_INT_iuser3
#define EV_INT_turret_target        EV_INT_iuser4
#define EV_INT_turret_ammo        EV_INT_team
#define EV_INT_turret_level        EV_INT_flSwimTime
#define EV_ENT_turret_owner         EV_ENT_owner
#define EV_ENT_turret_ranger        EV_ENT_euser1

public TurretThink(iTurretEntity
//...
static  ENUM_TURRET_TYPE:iTypeiType ENUM_TURRET_TYPEentity_get_int(iTurretEntityEV_INT_turret_type)
static 
iPlayeriPlayer entity_get_edict(iTurretEntityEV_ENT_turret_owner)
static 
iTurretIndex TurretIndex entity_get_int(iTurretEntityEV_INT_turret_index)

static 
iShotiShot entity_get_int(iTurretEntityEV_INT_turret_canshoot)
static 
iTargetiTarget entity_get_int(iTurretEntityEV_INT_turret_target)
static 
iTurretAmmoiTurretAmmo entity_get_int(iTurretEntityEV_INT_turret_ammo

or

PHP Code:

#define MAX_TURRETS 10
new g_PlayerTurretType[33][MAX_TURRETS]
new 
g_CanTurretShot[33][MAX_TURRETS]
new 
g_TurretAmmo[33][MAX_TURRETS]
new 
g_gTurretTarget[33][MAX_TURRETS]

public 
TurretThink(iTurretEntity
//...
static iPlayeriPlayer entity_get_edict(iTurretEntityEV_ENT_turret_owner)
static 
iTurretIndex ;  iTurretIndex entity_get_int(iTurretEntityEV_INT_turret_index)
static  
ENUM_TURRET_TYPE:iTypeiType ENUM_TURRET_TYPEg_PlayerTurretType[iPlayer][iTurretIndex]
static 
iShotiShot g_CanTurretShot[iPlayer][iTurretIndex]
static 
iTarget;  iTarget g_TurretTarget[iPlayer][iTurretIndex]
static 
iTurretAmmoiTurretAmmo g_TurretAmmo[iPlayer][iTurretIndex

Faster is array or entity_get_int or edict etc?
This Think will be executed very, very often.
I want to keep data in EV_ (like #define upside) but I care about speed ;)

Black Rose 02-07-2017 14:17

Re: Question about optimization
 
This is of course a simulated example. It will not give an accurate picture of how you actually use the parameters. In some cases, you might not load every one of them which will reduce native calls with method 4 but leave the others more or less unchanged.
In the end, the biggest difference between them is around 20%, which is not enough to care about in situations like this. You will more likely have other functions in this think function to drain performance.
Spoiler


All times are GMT -4. The time now is 21:04.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.