За и против. Пофлеймим ? Есть ли разница по скорости в for'е С# (я __на самом деле__ понимаю, что это все фигня). ИМХО все оптимизируется. Как известные блоггеры/разработчики пишут?
Здравствуйте, Vadimmer, Вы писали:
V>За и против. Пофлеймим ? Есть ли разница по скорости в for'е С# (я __на самом деле__ понимаю, что это все фигня). ИМХО все оптимизируется. Как известные блоггеры/разработчики пишут?
Возьмите ildasm или reflector и убедитесь, что и код
for (int i = 0; i < 10; i++)
{
Console.WriteLine("lala");
}
и код
for (int i = 0; i < 10; ++i)
{
Console.WriteLine("lala");
}
Здравствуйте, Vadimmer, Вы писали:
V>За и против. Пофлеймим ? Есть ли разница по скорости в for'е С# (я __на самом деле__ понимаю, что это все фигня). ИМХО все оптимизируется. Как известные блоггеры/разработчики пишут?
Не думаю, что есть особая разница. Возможно, префиксный вариант будет быстрее, как и в C++ и по тем же причинам (не нужно кешировать и возвращать предыдущее значение). Если честно, то даже лень перегружать оператор, компилить и лезть смотреть рефлектором, что в итоге получается
Здравствуйте, VladD2, Вы писали:
VD>А зачем его тут кэшировать?
VD>Глупость это. Если компилятор не кривой и оптимзирирующий, то разницы быть не должно.
В цикле да. Вообще нет — вспомни те же итераторы С++.
Здравствуйте, krasin, Вы писали:
K>Здравствуйте, Vadimmer, Вы писали:
V>>За и против. Пофлеймим ? Есть ли разница по скорости в for'е С# (я __на самом деле__ понимаю, что это все фигня). ИМХО все оптимизируется. Как известные блоггеры/разработчики пишут?
K>Возьмите ildasm или reflector и убедитесь, что и код K>
K>for (int i = 0; i < 10; i++)
K>{
K> Console.WriteLine("lala");
K>}
K>
K>и код K>
K>for (int i = 0; i < 10; ++i)
K>{
K> Console.WriteLine("lala");
K>}
K>
Не корретные примеры. Вот такой код будет ли совпадать?
for (int i = 0; i < 10;)
{
Console.WriteLine("{0}", i++);
}
for (int i = 0; i < 10;)
{
Console.WriteLine("lala", ++i);
}
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, VladD2, Вы писали:
VD>>Глупость это. Если компилятор не кривой и оптимзирирующий, то разницы быть не должно. ВВ>А если речь идет не о примитивах и операторы перегружены? Уверен, что не будет разницы?
Разумеется, разница будет. И вообще, хороший стиль писать ++i, если предыдущее значение нафиг не сдалось. А то сегодня у i тип int, а завтра ты его заменишь MyIterator.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>А если речь идет не о примитивах и операторы перегружены? Уверен, что не будет разницы?
Не уверен. Причем не уверен, что если разница будет, то в ту сторону в которую предсказывают смелые товарищи.
В общем, это ловля блох. Люди которые на полном серьезе обсуждают вопросы производительности оператора ++ просто зря едят свой хлеб.
Единственно что нужно учитывать применяя этот оператор — это его семантику. Если результат нужен до инкремента, то применяем i++ иначе ++i. И все. Остально булшит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ты понимашь насколько реализация даже самого примитивного итератора сложнее и затратее по времени, чем нюансы его вызова?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Воронков Василий, Вы писали:
ВВ>>А если речь идет не о примитивах и операторы перегружены? Уверен, что не будет разницы?
VD>Не уверен. Причем не уверен, что если разница будет, то в ту сторону в которую предсказывают смелые товарищи.
VD>В общем, это ловля блох. Люди которые на полном серьезе обсуждают вопросы производительности оператора ++ просто зря едят свой хлеб.
Для с++'ных user defined типов,если у них "тяжелый" конструктор копирования, использование ++ как говорится, make sense. Т.е. постфиксный оператор ++ может замедлить программу. Другое дело, что для "тяжелых" типов вряд-ли найдется применение ++
VD>Единственно что нужно учитывать применяя этот оператор — это его семантику. Если результат нужен до инкремента, то применяем i++ иначе ++i. И все. Остально булшит.
Здравствуйте, Константин Л., Вы писали:
КЛ>Для с++'ных user defined типов,если у них "тяжелый" конструктор копирования, использование ++ как говорится, make sense. Т.е. постфиксный оператор ++ может замедлить программу. Другое дело, что для "тяжелых" типов вряд-ли найдется применение ++
Давно не видел таких фобий. Ребятки, вы думайте о том, как вам применить лучшие алгоритмы, или воспользоваться более быстрыми библиотеками, а не рассуждайте с умным видом о скорости операторов которые переводятся в 1-4 машинные команды и имеют константное время измеряемое в наносекундах.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Константин Л., Вы писали:
КЛ>>Для с++'ных user defined типов,если у них "тяжелый" конструктор копирования, использование ++ как говорится, make sense. Т.е. постфиксный оператор ++ может замедлить программу. Другое дело, что для "тяжелых" типов вряд-ли найдется применение ++
VD>Давно не видел таких фобий. Ребятки, вы думайте о том, как вам применить лучшие алгоритмы, или воспользоваться более быстрыми библиотеками, а не рассуждайте с умным видом о скорости операторов которые переводятся в 1-4 машинные команды и имеют константное время измеряемое в наносекундах.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Константин Л., Вы писали:
КЛ>>Вижу, что человек в предмете не разбирается...
VD>Это не сюда. Это к акулисту.
Во всех твоих постах попахивает хамством, фамильярностью и претензией на абсолютную истинность.
Ты Г.Саттера читал? Там про разницу м/у постфиксной и префиксной формой написано. И почему в общем случае компилятор первую не может заменить на вторую.
Подчеркиваю, что все это относится только к с++. Про с# ничего скзать не могу, хотя, наверное, ситуация мало чем отличается.
Просто надо иметь привычку писать ++i вместо i++ если не нужно предыдущее значение. В этом я с тобой согласен.