У меня есть требование измерить время выполнения (стоимость процессора) плагинов на ходу, мы можем рассматривать плагины как функции, может быть много запущенных программ одновременно. Точнее, время выполнения должно исключать время простоя (время ожидания goroutine), только время получения CPU (текущей goroutine).
это как:
go func(){
// this func is a plugin
** start to record cpu acquire time of current func/plugin/goroutine **
** run code **
** stop to record cpu acquire time of current func/plugin/goroutine **
log.Debugf("This function is buzy for %d millisecs.", cpuAcquireTime)
** report cpuAcquirTime to monitor **
}()
По моему мнению, для измерения функции сложно выполнить модульный тест, код трудно отделить.
Я ищу в google и stackoverflow и не нахожу подсказки, есть ли какое-нибудь решение, чтобы удовлетворить мой спрос, и это занимает слишком много ресурсов?