Bonjour tout le monde
J'avais déjà posé des questions il y a quelques mois, et je remercie encore les personnes m'ayant répondu !
Mon projet actuel concerne un serveur de jeu ayant en moyenne 2000 clients connectés.
L'objectif que je me suis fixé est de rendre fluide ou du moins d’exécuter dans des délais extrêmement faibles n'importe quelle requête du client (Tout comme chaque bon développeur de serveur )
Cela fait déjà quelques temps que je me renseigne sur comment optimiser et gagner un maximum de performances sur son code, à un tel point que j'en suis perdu !
Premièrement, je suis un peu perdu sur l'utilisation des Threads :
- Faut-il utiliser des Threads, des Tasks, quelle est la différence entre les deux ?
- Peut-on "attribuer" un Thread à une classe, et faire en sorte que dès qu'une fonction appartenant à cette classe est lancée, celle-ci soit exécutée sur le Thread attribué à la classe ?
- J'ai entendu dire que le ThreadPool du Framework .Net contenait un certain nombre de Thread, et que si les tous les Threads étaient utilisés en même temps, les fonctions ne seraient plus exécutées jusqu'à tant que le pool se libère (Du coup très mauvais pour un serveur )
-J'entend beaucoup parler de Async et Await, je ne sais pas si le fait d'avoir des Threads et des opérations Asynchrones soit conseillé ?
Ensuite, je suis bloqué sur les Collections :
- J'ai eu l'occasion de voir sur des sites que les performances du Dictionnary<> étaient beaucoup plus intéressantes que celles de la List<> .. faut-il bannir les listes et n'utiliser que les dictionnaires ? (A part quand l'utilisation du dictionnaire se voit impossible )
- J'utilise "readerwriterlockslim" afin de sécuriser l’accès à mes collections. Mais si, admettons 20 Threads viennent essayer de lire des donnés dans une seule collection, toutes les opérations seront-elles exécutées simultanément ou les unes à la suite des autres ?
- J'ai mis le doigt sur le "HashSet", je ne comprends pas comment retrouver un objet, par exemple un client, dans ce fameux "HashSet", si cela est possible
J'essaye de communiquer avec ma base de données le moins possible, en stockant un maximum d'information parce que je sais que les requêtes avec la base de données sont souvent la cause de latences extrêmes ..
Voilà, je pense avoir fais le tour . Si vous pensez pouvoir nous apporter des techniques supplémentaires, n'hésitez pas ! Ce sont vraiment des sujets flous dans ma tête, soyez cool si des questions vous semblent ridicules
Merci d'avance à ceux qui prendront la peine de m'aider
Partager