基本上我的问题是,
在两者之间
logger.Info("Activity done. Conversion of : )" + param.FileRecordId + "successful. File can be downloaded under : " + file.FileRecordId)和
logger.Info(fmt.Sprintf("Activity done. Conversion of : %s successful. File can be downloaded under %s", param.FileRecordId, file.FileRecordId))哪一个更有效率?我知道String.Format更快,但在这里它正在logger.Info内部使用。它还能更有效吗?
发布于 2022-08-30 18:51:38
是的,但是在一个相当小的层次上的事物的宏伟计划。这不太可能是第一个开始优化您的代码库以节省成本或提高性能的地方。此外,您还可以更改您试图提高效率的内容,就像其他开发人员阅读、调试、维护等方面的效率一样。在这里,它可以得到更主观的答案,而不是清晰的答案。
在这一点上,我会亲自使用fmt.Sprintf作为详细日志记录的更好选择,因为它使我在读取消息时更容易理解正在记录的消息和传递的值。
发布于 2022-08-31 05:00:04
您可以编写一个简单的基准测试(https://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go)来检查哪种方法更有效。
但是对于日志记录,我想您应该选择最有效的方式,而是最方便、最容易阅读的方式。对我来说,它是f方法,类似于logger.Infof("Activity done. Conversion of : %s successful. File can be downloaded under %s", param.FileRecordId, file.FileRecordId)。
如果高性能对应用程序至关重要,请考虑使用https://github.com/uber-go/zap (README.md中提供的基准)。
https://stackoverflow.com/questions/73545791
复制相似问题