Visual Studio не удается отобразить некоторые следившие выражения

Можно также протестировать с , Преобразовывают. IsDBNull (MSDN) .

14
задан anishsane 3 December 2012 в 09:03
поделиться

2 ответа

Относительная стоимость плана выполнения не всегда является надежным индикатором производительности.

Я предполагаю из вашего sql, что должна быть возвращена только 1 строка. При условии, что UserId является уникальным ключом для User, тогда производительность ваших двух подходов будет аналогичной для большинства реляционных баз данных.

Следует иметь в виду следующее:

  • если UserPreferences или SearchCriteria возвращают более 1 строки, первый подход вызовет ошибку sql, второй подход вернет более 1 строки.
  • очевидный дополнительный поиск в первом подходе (UserPreferences выбран дважды) не имеет реального эффекта, потому что при втором поиске запись уже будет в буфер
  • , если по какой-то причине таблица User сканируется табличным пространством, Если у вас есть, например, std :: vector vecSomething , вы не можете поместить vecSomething [0] в окно просмотра, потому что std :: vector :: operator [] - перегруженный оператор. Следовательно, для вектора объектов нельзя сделать vecObject [0] .SomeMemberVariableOfObject в окне наблюдения. Вы можете написать vecObject._Myfirst [0] .SomeMemberVariableOfObject . В реализации STL в Visual Studio _Myfirst является членом вектора, указывающим на первый элемент.

    Если вы добавляете свои собственные переменные и типы в окно наблюдения, добавляйте наблюдения непосредственно к элементам данных. Проследить цепочки указателей вроде member.memberStruct.ptrToObj-> memberOfObj .

    Edit: http://geekswithblogs.net/sdorman/archive/2009/02/14/visual-studio-2008-debugging-ndash-the-watch-window.aspx

    Таким образом, немного загадочно, почему перегруженные операторы нельзя использовать.

9
ответ дан 1 December 2019 в 12:26
поделиться

Почему это происходит?

Инструмент имеет свои ограничения. Например, много раз я «перехожу к определению», а определение не находит. Приходится «искать в файлах». Неудивительно, что некоторые выражения также не вычисляются во время сеансов отладки.

Как это исправить?

  • Сохраняйте выражения простыми. Не объедините их напрямую, используйте переменные с пояснительными именами для промежуточные результаты.
  • Поддержите свой код явными утверждениями. Если это «неверно», утверждение должно завершиться ошибкой.
4
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: