Sto scrivendo una libreria in C ++ che deve essere veloce quanto ragionevolmente possibile. Tuttavia, mi piacerebbe anche essere in grado di fornire l'accesso nel caso in cui un utente (o me) ha bisogno di eseguire il debug dei possibili problemi.
Questa libreria deve essere compilata, ma contiene anche alcune classi basate sull'intestazione.
Come capisco, solitamente l'accesso alle librerie viene effettuato dichiarando, ma non definendo, una funzione di registrazione specifica, che viene utilizzata per registrare i messaggi all'interno della libreria. Questa funzione viene quindi definita all'interno del programma dell'utente, che registra con il meccanismo che l'utente desidera (o non registra affatto).
Dato che alcuni registri si trovano in posti molto sensibili alle prestazioni, mi chiedo se dovrei preoccuparmi che questo approccio possa avere un impatto sulle prestazioni della libreria anche quando l'utente non desidera affatto la registrazione. La libreria è solitamente collegata staticamente.
Un'idea alternativa che avrei avuto sarebbe quella di definire la registrazione come una macro e definirla sia durante la fase di creazione della libreria che durante la fase di costruzione del programma finale come una macro vuota o la funzione di generazione desiderata. Ciò garantirebbe che in caso di mancata registrazione, nulla resterebbe nel programma finale. Tuttavia, sarebbe più complicato per l'utente e probabilmente più complicato in quanto sarebbe necessario modificare un file di intestazione della libreria prima di creare la libreria per definire correttamente la macro.
Quali sono le migliori pratiche per questo tipo di problema?