Во-первых, я понимаю, что в 90% приложений разница в производительности совершенно несущественна, но мне просто нужно знать, какая конструкция быстрее. Это и ...
Информация, доступная в настоящее время о них в сети, сбивает с толку. Многие люди говорят, что foreach - это плохо, но технически это должно быть быстрее, поскольку предполагается упростить написание массива с помощью итераторов. итераторы, которые, опять же, должны быть более быстрыми, но в PHP, по-видимому, слишком медленными (или это не PHP)? Я говорю о функциях массива: next () prev () reset () и т. Д. Хорошо, если они являются даже функциями, а не одной из тех функций языка PHP, которые выглядят как функции.
Чтобы немного сузить это : Меня не интересует обход массивов с шагами, превышающими 1 (никаких отрицательных шагов тоже нет, т.е. обратная итерация). Я также не заинтересован в обходе и от произвольных точек, просто 0 к длине. Я также не вижу, что манипулирование массивами с более чем 1000 ключами происходит регулярно, но я вижу, что массив перебирается несколько раз в логике приложения! Также что касается операций, в основном только строковых манипуляций и эхо.
Вот несколько справочных сайтов:
http: // www. phpbench.com/
http://www.php.lt/benchmark/phpbench.php
What, что я слышу везде: foreach медленный, и, таким образом, для
/ в то время как
быстрее
foreach
копирует массив, по которому он повторяется; чтобы сделать это быстрее, вам нужно использовать код ссылки $ key = array_keys ($ aHash); $ size = sizeOf ($ key);
для ($ i = 0; $ i быстрее, чем foreach
Вот моя проблема. Я написал этот тестовый скрипт: http://pastebin.com/1ZgK07US и независимо от того, сколько раз я запускаю скрипт, я получаю что-то вроде этого:
foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
Короче:
foreach
быстрее, чем foreach
со ссылкой foreach
быстрее, чем для
foreach
быстрее, чем для
для хеш-таблицы Кто-нибудь может объяснить?
PHP версии 5.3.0 видел несколько в сети, но каждый раз, когда я проверяю их, время отстает; Я также протестировал несколько простых конструкций итераторов, но, похоже, никогда не получал даже приличных результатов - действительно ли итераторы массивов в PHP просто ужасны?
PHP версии 5.3.0 видел несколько в сети, но каждый раз, когда я проверяю их, время отстает; Я также протестировал несколько простых конструкций итераторов, но, похоже, никогда не получал даже приличных результатов - действительно ли итераторы массивов в PHP просто ужасны?
PHP версии 5.3.0
С помощью людей здесь я смог собрать воедино ответы на все вопросы. Я суммирую их здесь:
В форме Winforms я хочу предоставить пользователю визуальные подсказки, когда поле ввода содержит недопустимое значение. Для этого я хочу связать свойство ForeColor
метки поля ввода со свойством (логическим) IsPropertyValid
базовой модели, чтобы метка становилась красной, когда IsPropertyValid == false
.
В настоящее время у меня есть обработчик события для события формата привязки
:
Controls["dateOfBirthLabel"].DataBindings["ForeColor"].Format += convertBoolToColor;
// (dateOfBirthLabel.ForeColor is bound to a boolean IsDateOfBirthValid property.)
void convertBoolToColor(object sender, ConvertEventArgs e)
{
e.Value = (bool)e.Value ? Color.Black : Color.Red;
}
Если бы я хотел сделать это в WPF, Я полагаю, что я бы указывал пользовательский преобразователь значений ( bool
- Color
) напрямую с привязкой в XAML. Самое главное, мне не пришлось бы ссылаться на конкретный элемент управления через его имя.
Я хотел бы сделать то же самое с моей формой Winforms. В идеале я мог бы указать объект TypeConverter
для конкретной привязки непосредственно в конструкторе форм. Возможно ли это?