调试编译中发生了什么导致查询执行时间更长?

时间:2013-10-26 20:22:12

标签: sql-server servicestack ormlite-servicestack

使用SqlServer OrmLite dialect

通过Nuget运行ServiceStack 3.9.69

我正在尝试执行参数化存储过程,但在编译模式设置为debug时注意到异常缓慢。慢的方法是ConvertToList以下:

    Dim result = Db.Exec(Of List(Of Dto.FieldSample))(
        Function(cmd)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "up_GetFieldSample"
            cmd.Parameters.Add(New SqlClient.SqlParameter("@uploadID", uploadId))
            Dim reader = cmd.ExecuteReader()

            Dim converted = reader.ConvertToList(Of Dto.FieldSample)()

            Return converted
        End Function)

(我知道有一个.SqlList扩展程序可用,但我首先尝试了相同的结果。我切换到Exec以更好地了解问题的位置)

在非调试模式下执行时,存储过程在2-3秒内返回,在调试模式下则为15-20秒。我知道调试编译中经常包含跟踪等,但我试图找出实际上这么慢的内容。

debug编译中导致查询执行时间更长的事情发生了什么?

1 个答案:

答案 0 :(得分:3)

正如我所怀疑的那样,在ConvertToList PopulateWithSqlReader调用LogManager.LogFactory = New ConsoleLogFactory() Source

期间,会执行一些内部错误处理/记录

潜在的问题是我的POCO(十进制?)和数据库(int)之间的数据类型不匹配。直到我连接{{1}},我才能看到异常被抛出内部,记录,然后继续前进。 235+(行)的异常处理是造成延迟的原因。