Je veux obtenir l'année et le mois d'un objet COleDateTime et je veux qu'il soit aussi rapide que possible. J'ai 2 options;Est-il plus rapide d'obtenir l'année et le mois directement à partir de COleDateTime ou de convertir en SYSTEMTIME en premier?
COleDateTime my_date_time;
int year = my_date_time.GetYear();
int month = my_date_time.GetMonth();
ou
COleDateTime my_date_time;
SYSTEMTIME mydt_as_systemtime;
my_date_time.GetAsSystemTime(mydt_as_systemtime);
int year = mydt_as_systemtime.wYear;
int month = mydt_as_systemtime.wMonth;
La question est, ce qui serait plus rapide?
COleDateTime
stocke sa représentation de date interne comme DATE
typedef, et donc quand vous appelez GetYear()
et GetMonth()
il doit calculer ces chaque fois. Dans le cas SYSTEMTIME
, les valeurs de wYear
et wMonth
sont stockées sous la forme DWORD
s, il s'agit donc simplement de récupérer les valeurs, mais il existe un surcoût lors de la conversion d'un COleDateTime
en SYSTEMTIME
.
Merci,
Sterren
Faites-vous cela dans un contexte où la vitesse compte vraiment? Si c'est le cas, comparez les deux et revenez nous dire le résultat. –
@MarkRansom Oui, la vitesse est importante dans le contexte du code. Si je ne reçois pas de réponse explicative ici, je finirai par l'évaluer. J'ai juste espéré qu'un utilisateur expérimenté sache que la conversion de l'algorithme 'COleDateTime' en' SYSTEMTIME' est plus efficace que le 'DATE' à l'année et ensuite' DATE' au mois ou à d'autres. – Steztric
Honnêtement, vous pouvez banc ce plus rapidement que quiconque ici peut répondre. –