![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Rockie |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Наверное вопрос больше касается оптимизации кода в .NET. У меня есть программа, которая работает со списками SharePoint. Есть код, написанный и оставленный закоментаченным:
Визуально программа работает быстро, доли секунды. Затем я раскомментировал код:
Время работы программы сразу возрастает(3-5 секунд). Но ведь этот код не делает ничего ![]() Почитал про метод foreach. http://msdn.microsoft.com/ru-ru/magazine/cc163323.aspx Как понял, foreach - интересная штука, которая создает некий объект-итератор, позволяет работать с разными коллекциями абстрактно от данных, все это в try/catch.. Вот только непонятно - зачем, ведь в данном случае в моем коде в скобках пусто и ничего не происходит. Что это - плохая оптимизация? Или в .NET надо аккуратно обращаться с foreach? -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
Rockie, ну а разве не очевидно, что при раскомментаривании этих строк будет выполняться цикл? Или вы думаете, что компилятор соптимизирует этот код и опустит? в релизной версии пробовали? результат тот же?
а вообще недавно дискуссия была по этому поводу: http://forum.vingrad.ru/topic-223121.html -------------------- СУВ, Partizan. |
|||
|
||||
nagg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: нет Всего: 4 |
Видемо эта конструкция не расчитана для пустого тела цикла
![]() используй for --------------------
I am the State... |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Partizan, в релизе то же самое. Конечно, imho по хорошему такие блоки надо пропускать.
Похоже в .NET такие конструкции тоже не сворачиваются. ![]()
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
foreach оптимизировать точно нельзя, даже если тело цикла пустое, т.к. могут происходить какие-либо дополнительные действия при создании энумератора (другое дело, что писать такой код - грех
![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
mihryak, да...я тоже об этом подумал...
-------------------- СУВ, Partizan. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Очевидно, что косяк в глючной реализации класса SPListItem/SPList. Конечно проще списать погрешности своего кривого кода на foreach... Браво!
Добавлено через 3 минуты и 42 секунды Такие конструкции даже в С не сворачиваются, что активно использовалось сишниками для организации временных задержек в стародавние времена, моветон естесвенно, но факт. Это сообщение отредактировал(а) source777 - 13.8.2008, 12:15 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |