Récemment, je fais souvent des choses comme intégrer des journaux de mesure des performances et les désactiver à chaque fois, j'ai donc décidé de créer une bibliothèque. Puisque je l'ai fait avec beaucoup d'efforts, c'est un mémorandum.
2017/4/23 Corrigé car il y avait une différence dans la définition du type et la configuration
Si vous l'utilisez avec une image printf, il enregistrera un journal avec le temps. Le journal n'est pas sorti immédiatement lorsque la fonction est exécutée, mais est sauvegardé dans la mémoire réservée et déchargé à la fin.
Comme il ne crache pas de journaux à chaque fois que le traitement est exécuté, il crache des journaux avec memcpy, donc je pense que cela a moins d'effet sur la vitesse que la simple insertion de journaux. Je pense qu'il peut être suffisamment utilisé au niveau applicatif du middleware.
Les bases sont les suivantes.
timetestlog.h
void * timetestlog_init(char *delimiter, size_t maxloglen, unsigned long maxstoresize);
int timetestlog_store_printf(void * handle, const char *format, ...);
void timetestlog_exit(void * handle);
timeestlog_init: fonction d'initialisation - input --delimiter [in] Timestamp Il est possible de spécifier un délimiteur entre les journaux. Si NULL, "". --maxloglen [in] Longueur maximale d'une ligne de journal de sortie. Les journaux plus longs que cette longueur seront tronqués. --maxstoresize [in] Nombre maximum de journaux à stocker. Plus de journaux que ce nombre seront tronqués. - return --Handle à utiliser dans les API suivantes. NULL est une erreur
timeestlog_store_printf: fonction d'enregistrement du journal. Spécifiez simplement le handle obtenu par timeestlog_init dans le premier argument de printf.
timeestlog_exit: Quitter la fonction. Spécifiez le handle obtenu par timeestlog_init.
Il est répertorié ci-dessous sur github. https://github.com/developer-kikikaikai/speedtest
Après le clonage ou le téléchargement du code
cd speedtest/lib
make
Construisez avec. Libtimelog.so et libtimelog.a seront créés dans le même dossier.
Confirmé pour fonctionner avec Ubuntu 14.04 Desktop 64bit Je pense que cela fonctionnera sous Linux OS.
-Bien que je sois attentif à ce que la surcharge soit petite, comme l'attribution uniquement à init, je ne me soucie pas de la surcharge pour les fonctions ordinaires telles que va_start et memcpy.
Recommended Posts