【问题标题】:Slow performance with SecuritySafeCriticalAttribute on win server 2008Win server 2008 上的 SecuritySafeCriticalAttribute 性能缓慢
【发布时间】:2012-12-17 00:41:22
【问题描述】:

我的应用程序在Wait 方法上花费了太多时间

环境:

  • .Net 4.0
  • 应用平台 x86
  • 控制台应用
  • win server 2008 (x64)

我通过 dottrace 检查了性能

Wait 标记为SecuritySafeCriticalAttribute

请注意在 Win7 (x64) 上一切正常。没找到,欢迎提出建议。

任务处理

private readonly BlockingCollection<TTask> _queue = new BlockingCollection<TTask>();
private Thread _workThread;

public void ProcessTask(TTask task)
{
    _queue.Add(task);
}

private void ProcessTask()
{
    while (_isRun)
    {
        try
        {
            TTask task = _queue.Take();
            if (task.IsNull())
            {
                continue;
            }
            _log.DebugFormat("Sending task: {0}", task);
            DoProcessMessage(task);
        }
        catch (Exception ex)
        {
            _log.Error(ex);
        }
    }
}

【问题讨论】:

    标签: .net security c#-4.0 code-access-security


    【解决方案1】:

    我认为安全属性不会影响速度。在这里等待很长时间可能需要很多时间,可能是因为您同时从多个线程访问受保护的对象(某些集合)并保持对象锁定很长时间(例如,当您的代码处理集合中的每个项目时)。这不是使用集合的正确方法,而且绝对是代码中的瓶颈。

    【讨论】:

    【解决方案2】:

    已解决

    看起来像 dottrace 显示天气。我已通过 ANTS Performance Profiler 检查了性能并修复了该问题。问题出在通过 NHibernate 的 sql 请求中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多