[Patchs] Chasse à la fuite de mémoire et aux warnings !
Bonjour,
Je viens vous demander si c'est vraiment utile de faire la chasse au fuite de mémoire et aux warnings.
Par exemple, modifier les types des variables utilisées dans les boucles (uint32 en uint8), un exemple :
[code=diff]

diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 446dd01..09666aa 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -981,7 +981,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo)
SetUInt32Value(PLAYER_GUILDRANK, 0);
SetUInt32Value(PLAYER_GUILD_TIMESTAMP, 0);

- for (int i = 0; i < KNOWN_TITLES_SIZE; ++i)
+ for (uint8 i = 0; i < KNOWN_TITLES_SIZE; ++i)
SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES + i, 0); // 0=disabled
SetUInt32Value(PLAYER_CHOSEN_TITLE, 0);

@@ -1112,7 +1112,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo)

if (oEntry)
{
- for (int j = 0; j < MAX_OUTFIT_ITEMS; ++j)
+ for (uint8 j = 0; j < MAX_OUTFIT_ITEMS; ++j)
{
if (oEntry->ItemId[j] <= 0)
continue;
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
index ad91663..499c7eb 100755
--- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
@@ -1252,7 +1252,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
return;
}

- for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{
recv_data >> declinedname.name[i];
if (!normalizePlayerName(declinedname.name[i]))
@@ -1274,7 +1274,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
return;
}

- for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
CharacterDatabase.EscapeString(declinedname.name[i]);

SQLTransaction trans = CharacterDatabase.BeginTransaction();
@@ -1486,7 +1486,7 @@ void WorldSession::HandleEquipmentSetSave(WorldPacket &recv_data)
eqSet.IconName = iconName;
eqSet.state = EQUIPMENT_SET_NEW;

- for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i)
+ for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{
uint64 itemGuid;
recv_data.readPackGUID(itemGuid);
@@ -1522,7 +1522,7 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket &recv_data)

sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_EQUIPMENT_SET_USE");

- for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i)
+ for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{
uint64 itemGuid;
recv_data.readPackGUID(itemGuid);
[/code]

Ou par exemple tous les warnings du compilateur..
Je pense que pour ce genre de chose, il est important de le poster aussi chez trinity ( si ce n'est pas déjà fait )

Cordialement,
MacWarrior.
Ben oui c’est utile... un code qui bouffe moins de mémoire est plus performant.
(04-12-2011 14:16)MacWarrior a écrit :  Je pense que pour ce genre de chose, il est important de le poster aussi chez trinity ( si ce n'est pas déjà fait )

Cordialement,
MacWarrior.
Je le commiterais sur ZoneEmuWotlk puis je ferais un pull request sur TrinityCore. Ce sera plus simple que de passer par un .diff Clin

(04-12-2011 15:04)Elmsroth a écrit :  Ben oui c’est utile... un code qui bouffe moins de mémoire est plus performant.
Bien sûr, je suis d'accord avec toi. Mais cette différence de quelques octets est-elle vraiment significative avec les ordinateurs de nos jours ?
(04-12-2011 17:49)Shyax a écrit :  Bien sûr, je suis d'accord avec toi. Mais cette différence de quelques octets est-elle vraiment significative avec les ordinateurs de nos jours ?

Différence de quelques octets comme tu le dit, mais démultiplié par le nombre de joueurs par exemple, tout devient différent Clin

Cordialement,
MacWarrior.
Possible, je n'ai pas jamais géré un "grand" serveur Clin
Au moins, ça fait du travail vu le nombre de boucles.
Ben voui Clin

Retourner en haut Accueil