相关疑难解决方法(0)

试着抓住表现

MSDN上的这篇文章指出,您可以根据需要使用尽可能多的try catch块,并且不会产生任何性能成本,因为不会引发任何实际异常.
因为我总是认为即使没有抛出异常,try-catch总是会受到很小的性能影响,所以我做了一点测试.

 private void TryCatchPerformance()
        {
            int iterations = 100000000;

            Stopwatch stopwatch = Stopwatch.StartNew();
            int c = 0;
            for (int i = 0; i < iterations; i++)
            {
                try
                {
                   // c += i * (2 * (int)Math.Floor((double)i));
                    c += i * 2;
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
            stopwatch.Stop();
            WriteLog(String.Format("With try catch: {0}", stopwatch.ElapsedMilliseconds));

            Stopwatch stopwatch2 = Stopwatch.StartNew();
            int c2 = 0;
            for (int i = 0; i < iterations; i++)
            {
              //  c2 …
Run Code Online (Sandbox Code Playgroud)

c# performance

25
推荐指数
4
解决办法
2万
查看次数

在C#下,多少性能命中是try,throw和catch块

首先,免责声明:我有其他语言的经验,但我仍在学习C#的微妙之处

关于问题...我正在看一些代码,它以一种让我关注的方式使用try/catch块.当调用解析例程而不是返回错误代码时,程序员使用以下逻辑

catch (TclException e) {
  throw new TclRuntimeError("unexpected TclException: " + e.Message,e);
}  
Run Code Online (Sandbox Code Playgroud)

这是由调用者捕获的,它抛出相同的错误......
由调用者捕获,它抛出相同的错误......
.....被调用者捕获,抛出同样的错误...

备份大约6个级别.

我认为所有这些catch/throw块都会导致性能问题,或者这是C#下的合理实现吗?

c# performance catch-block

14
推荐指数
3
解决办法
7623
查看次数

标签 统计

c# ×2

performance ×2

catch-block ×1