经常提到异常是昂贵的,并且.NET中的各种方法也是昂贵的.
究竟什么构成了.NET中昂贵的方法?
这是该方法处理的时间吗?EG我使用WebClient对象获得了网页的响应流(这不是异步),当获得响应并将其分配给变量时,需要一段时间来逐步完成这行代码.也许是因为网页本身是图形密集和大.为了看到所花费的时间,我知道我可以使用秒表或计时器(这两者之间存在细微差别,我不记得了).
还是采取了资源?如果是这样,查看方法所需资源的最佳方法是什么?我知道我可以使用其中一种GC方法或分析器.有什么其他方法吗?
昂贵是程度和背景的问题.
我在图像处理方面工作,我觉得分工很贵.在我的情况下,任何最终在一个循环中执行两到五百万次的操作就会增加.这可能是1/8秒和1/32秒之间的差异.UI时间的1/8秒对动态显示来说很重要.1/32是可以接受的.
在其他情况下,它可以是大型JPEG图像的完全解码并缩小它们,而不是利用同样文件中编码的2个缩小版本的功能.
在网页时间中,它可能是页面加载时的服务器命中数.明白了吗?
语境就是一切.
如果资源稀缺并导致其他事情等待,则资源被认为是昂贵的.如果你有1个非raid磁盘,如果两个进程在整个地方反弹,你需要付出沉重的代价,因此严重依赖于驱动器和操作系统中的缓存.
您的打印机是一种非常昂贵的资源,特别是如果它没有纸张,因此排队.
与其他语言功能相比,例外是昂贵的.静态方法调用很便宜.普通方法调用稍贵一些.虚方法调用稍贵一些.例外情况要贵得多.
例如,您可以抱怨C#没有类型强的多态返回类型,我可以说 - 哦不,它确实 - 只是抛出结果并在另一侧捕获正确的类型.然后我会被嘲笑出房间提出建议.与返回(几乎没有指令)相比,异常可能会导致几十到几百个,具体取决于上下文.