La différence entre debug et release est de 30%...
Version imprimable
La différence entre debug et release est de 30%...
Donc, ce n'est pas le at ou [] qui pose problème. C'est ton algo en lui même qu'il faut optimiser. La mesure est biaisé par un grand nombre d'appel a ces méthodes en debug.
Il fait quoi ton algo?
Comme dit plus haut. C'est les déplacment joueur.
Quand le joueur X bouge, l'info est transmise aux joueur prêt de lui. Et si un joueur prêt de lui bouge, l'info lui est transmise. Alors si tout le monde bouge...
EDIT: Avec QHash j'ai 50% de performance en plus!Je me suis apperçu tardivement qu'il supporté de multiple vableur pour la même clef, je vais donc tout refaire...
Voila avec la multi-implementation:
http://pastebin.com/6kHh5wen
Il fait un segfaultne version C (macro POKECRAFT_SERVER_MAP_MANAGEMENT_LIST_TYPE_C_MALLOC), pas moyen de comprendre pourquoi.
Et la version C++/STL me bloque sur:
Code:../pokecraft-server-gui-2/pokecraft-server/ClientMapManagement.cpp:521:50: error: no match for 'operator[]' in '((ClientMapManagement*)this)->ClientMapManagement::to_send_map_management_move[((ClientMapManagement*)this)->ClientMapManagement::moveClient_index]'
Peux tu expliquer le contexte de ton jeux?
mmorpg, 2D tiled, type pokemon...
Rapport avec le probléme?
1) j'ai utilisé un algo plus efficace qui n'utilise pas de float (j'ai découpé en sous map), et pour une map de 100 000 par 100 000 ça fait 10Go de ram si je compte 8Bits (1octect) par case, j'ai prévu un algo plus évoluer plus tard
2) le problème ce situe sur la répartition des déplacements entres tout les joueurs, pas sur la détection de la proximité, j'aimerai calculer 1000 joueurs qui ce vois, ça ferai environs 33 000 joueur supporté à 30 joueur par sous map.
Aprés teste: QHash = C = C++/STL, soit beaucoup moins de cpu que QList
C'est quoi l'équivalent de QList en STL, car vector ne permet pas la suppression d'une entrée à un index.
16% du cpu pour mon implementation en QHash
20% pour l'implémentation en C/C++
33% en QList
J'ai tester avec un certain nombre de container, QList n'est que l'implementation de base que j'ai faite.
J'ai justement supprimé la QList.