При попытке установить значение по умолчанию как ТЕПЕРЬ (), я не думаю поддержки MySQL это. В MySQL Вы не можете использовать функцию или выражение как значение по умолчанию ни для какого типа столбца, за исключением столбца Типа данных timestamp, для которого можно определить CURRENT_TIMESTAMP как значение по умолчанию.
Как заметил Мердад, доступ к свойству Lines
занимает много времени. Здесь нужно быть осторожным - вы обращаетесь к нему дважды на каждой итерации в данный момент:
String s = String.Empty;
for (int i = 0; i < richTextBox.Lines.Length; i++)
{
s = richTextBox.Lines[i];
}
Даже если вы удалите доступ в теле цикла следующим образом:
String s = String.Empty;
for (int i = 0; i < richTextBox.Lines.Length; i++)
{
}
вы по-прежнему обращается к строкам
на каждой итерации, чтобы проверить, закончили ли вы!
Если вы не хотите foreach
, вы можете просто получить ] Строки
один раз:
string[] lines = richTextBox.Lines;
for (int i = 0; i < lines.Length; i++)
{
s = lines[i];
}
Лично я предпочитаю foreach
, если вам действительно не нужен индекс :)
Я думаю, что свойство Lines
пересчитывается каждый раз, когда вы хотите получить к нему доступ. Следовательно, метод foreach
выполняет вычисление только один раз, в то время как каждый раз, когда ваша ссылка Lines [i]
выполняет переоценку всего этого. Попробуйте кэшировать результат свойства Lines
и снова проверьте:
String s = String.Empty;
var lines = richtextbox.Lines;
for(int i = 0; i < lines.Length; i++)
{
s = lines[i];
}
Кстати, ваш вопрос подразумевает неявное предположение, что foreach
всегда медленнее, чем для
. Это не всегда так.
Вероятно, потому что поиск следующей строки в текстовом поле требует времени. Когда вы в первом случае используете произвольный доступ путем индексации, он должен найти эту строку с нуля. Когда итерация выполняется внутри foreach
, она может сохранить состояние и быстро найти следующую строку.
Это должно заставить первый случай выполняться за время O (n ^ 2), а второй - за O (n).
Может быть, каждая строка копируется в новую строковую переменную (str) в каждом цикле? Я ошибаюсь, но вы, вероятно, могли бы проверить теорию с помощью этого кода
String s = String.Empty;
for (int i = 0; i < richTextBox.Lines.Length; i++)
{
string str = richTextBox.Lines[i];
s = str;
}
.NET Reflector очень полезен, чтобы определить , почему вы видите производительность, которой не ожидаете.
Попробуйте взглянуть на Строки
получают
аксессор, чтобы видеть, что он на самом деле делает каждый раз, когда вы к нему обращаетесь.