经常要传入参数包,当时一直是用泛型+ChangeType解决的。测试了下,看来这样确实慢了.
另外,可能都会认为Release发布之后会被优化掉。但测试了Release和Debug结果一样慢,比较失望。
public void Start<T>(T arg) { var tmp = (Class1ArgPack)Convert.ChangeType(arg, typeof(Class1ArgPack)); //Do something }
100w次for循环(仅供参考)
用例 | Struct耗时 | Class耗时 |
new class | n/a | 306ms |
Convert.ChangeType | 113ms | 67ms |
Object强弱类型转换 | 65ms | 20ms |
直接传入强类型 | 17ms | 17ms |