Должен ли я создать другую переменную вместо 3 явных приведений? - PullRequest
2 голосов
/ 22 февраля 2011

Это вопрос скорости. У меня есть следующий код:

if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Descriptions/Description/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_desc.Text = MyXMLReader.GetValue(command, "/Command/Descriptions/Description[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Descriptions/Description/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}
if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Uses/Use/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_use.Text = MyXMLReader.GetValue(command, "/Command/Uses/Use[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Uses/Use/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}
if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Notes/Note/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_notes.Text = MyXMLReader.GetValue(command, "/Command/Notes/Note[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Notes/Note/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}

Должен ли я создать новую string переменную для хранения

((TabDocument)dockManager.ActiveDocument).version?

Будет ли это выгоднее с большей скоростью и отзывчивостью? Это будет плохо или хорошо?

Ответы [ 4 ]

8 голосов
/ 22 февраля 2011

Короче говоря, yes .

Стоимость многократного приведения ActiveDocument к TabDocument, вероятно, незначительна, но если вы хотите оптимизировать, храните его в промежуточном звене.Переменная - это шаг к положительному результату.

Но почему вы действительно должны это сделать, это для читабельности кода.

3 голосов
/ 22 февраля 2011

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

Мы должны как можно больше избегать написания дважды одной и той же вещи.

Надеюсь, это поможет

3 голосов
/ 22 февраля 2011

Это, безусловно, улучшит читабельность.

Что касается скорости и отзывчивости, единственный способ, которым это могло бы ужасно улучшить что-либо, - это если свойства ActiveDocument или version выполняют много вычислений, чтобы получить их возвращаемое значение.

1 голос
/ 22 февраля 2011

ActiveDocument и String будут на одном уровне косвенности. Таким образом, они оба займут одинаковое количество времени.

Вместе с этим вы добавите дополнительные затраты на создание объекта 'String'.

Но все это должно быть невероятно незначительным в великой схеме вещей. Если вы хотите улучшить свою скорость, вы должны искать в другом месте!

...