Fournit des performances, une précision et un suivi de puissance simplifiés.
Pour les bibliothèques originales qui prennent en charge la mémoire partagée et gère automatiquement les lecteurs de la mémoire et de l'énergie, voir les battements de cœur.
Voir également HeartBeats-Simple-Classic, qui enveloppe cette bibliothèque et EnergyMon pour fournir une interface similaire à la conception des battements cardiaques d'origine.
Ce projet utilise Cmake.
Pour construire, courir:
mkdir _build
cd _build
cmake ..
makePour installer, exécutez avec des privilèges appropriés:
make install Sur Linux, l'installation place généralement les bibliothèques dans /usr/local/lib et les fichiers d'en-tête dans /usr/local/include .
L'installation doit être exécutée avant la désinstallation afin d'avoir un manifeste.
Pour désinstaller, exécutez avec les privilèges appropriés:
make uninstall Si votre projet utilise CMake, vous pouvez trouver le package HeartbeatsSimple et un lien avec la cible de bibliothèque heartbeats-simple dans cet espace de noms, par exemple:
find_package (HeartbeatsSimple REQUIRED)
target_link_libraries (foo PRIVATE HeartbeatsSimple::heartbeats-simple) Sinon, obtenez des informations sur les drapeaux et les liens avec pkg-config , par exemple:
pkg-config --cflags heartbeats-simple
pkg-config --libs heartbeats-simple Ce qui suit est un exemple de battements cardiaques simples, ignorant les vérifications d'erreur et les instructions #include supplémentaires, qui sont spécifiques à la plate-forme.
#include <heartbeats-simple.h>
void do_application_loop ( uint64_t iterations , uint64_t window_len ) {
heartbeat_context hb ;
heartbeat_record * window_buf = malloc ( window_len * sizeof ( heartbeat_record ));
int fd = open ( "heartbeat.log" , O_CREAT | O_WRONLY | O_TRUNC , S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH );
heartbeat_init ( & hb , window_len , window_buf , fd , NULL );
hb_ctx_log_header ( & hb );
for ( uint64_t i = 0 ; i < iterations ; i ++ ) {
uint64_t start_time = get_time_in_ns ();
do_work ();
uint64_t end_time = get_time_in_ns ();
heartbeat ( & hb , i , 1 , start_time , end_time );
}
hb_ctx_log_window_buffer ( & hb ); // flush remaining window data to log file
close ( fd );
free ( window_buf );
} Trouvez ceci et les sources de projet connexes à l'organisation LibheartBeats sur GitHub.
Ce projet provient de: https://github.com/libheartbeats/heartbeats-simple
Les rapports de bogues et les demandes de traction pour les corrections de bogues et les améliorations sont les bienvenues.