Что такое LicenseInteropHelper.getCurrentContextInfo и почему он использует так много циклов моего приложения .net? - PullRequest
3 голосов
/ 02 февраля 2010

Я работаю над настройкой производительности веб-сервиса. Я использую пробную версию JetBrains для профилирования приложения. Когда я импортирую файл, 15% времени выполнения уходит на GetCurrentContextInfo, вот подпись:

Void System.ComponentModel.LicenseManager.LicenseInteropHelper.GetCurrentContextInfo(Int32 &, IntPtr &, RuntimeTypeHandle)

Эти вызовы функций предположительно исходят из моей функции запроса:

Public Function query(ByVal sql As String) As ADODB.Recordset
    Try
        Dim conn As ADODB.Connection
        Dim rs As New ADODB.Recordset
        conn = curConnection()
        rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)
        Return rs
    Catch ex As System.Runtime.InteropServices.COMException
        handleDatabaseError(ex)
    End Try
End Function

Функция curConnection () представляет собой пул соединений. Я не могу понять, где он получает GetCurrentContextInfo - я не могу найти ссылку на него в своем решении.

Что это за функция, и если она не нужна, как я могу от нее избавиться или ограничить время, которое она использует?

1 Ответ

3 голосов
/ 15 сентября 2010

Мы столкнулись с очень похожей проблемой при отладке веб-вызова с использованием ANTS Performance Profiler, за исключением того, что у нас проблема была гораздо более серьезной (90% времени выполнения было потрачено здесь).

После некоторого расследования мы обнаружили, что именно код ADODB вызывал этот вызов GetCurrentContextInfo. Поскольку это было единственное место в нашем коде с использованием коннектора ADODB, мы перешли на MySqlConnector / NET. Это резко улучшило производительность нашего звонка. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...