今天读了 Andrew Lock 的2篇博文学到的招式,记录一下。
两篇博文的链接:
- Using default interface methods for performance gains in IHeaderDictionary
- A brief look at StringValues
之前的读取 UserAgent 的代码:
var userAgent = context.HttpContext.Request.Headers[HeaderNames.UserAgent].ToString();
重构后的性能更好的代码:
string userAgent = context.HttpContext.Request.Headers.UserAgent;
1)用属性读取取代 Indexer 读取,来自这个 PR 运用 default interface methods 提升性能的巧妙实现
2)去掉显式 ToString,StringValues 中只有一个值时,可以避免 ToString 的开销,对于 UserAgent,通常只有一个值