Contexte: J'écris une application C++ 11 hautes performances, dont une partie consiste à supprimer les connexions inactives. Pour cela, je stocke un horodatage de "dernière activité" dans mon objet de connexion, que je mets à jour lorsqu'une action est effectuée. J'ai alors une minuterie qui s'exécute toutes les quelques secondes, boucle toutes les sessions, et supprime celles qui sont inactives.Quel est le moyen le plus rapide d'obtenir l'heure actuelle dans C++ 11?
Actuellement, je suis en utilisant ce code pour obtenir l'horodatage actuel:
timestamp = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count()
Je me demande s'il y a une façon plus rapide de le faire? Par rapide, je veux dire la performance de l'horodatage lui-même, pas la résolution de l'horodatage.
La résolution n'est pas vraiment importante pour mon application spécifique, elle pourrait descendre aussi bas qu'une seconde. En outre, utc/local n'a pas d'importance, je n'utilise que l'horodatage pour le comparer à d'autres horodatages, acquis par la même méthode. Je souhaiterais le garder multi-plateforme, mais les optimisations spécifiques à la plate-forme avec compilation conditionnelle sont également les bienvenues.
Pourquoi ne faites-vous pas simplement 'timestamp = system_clock :: now();'? – nwp
Avez-vous * mesuré * que l'extraction d'horodatage est un goulot d'étranglement? Avez-vous examiné le code machine généré (optimisé!)? –
Pour ajouter à @nwp, vous pouvez simplement vérifier que 'system_clock :: now() - timestamp