Обычно я хорошо знаю, что такое соображение является преждевременной оптимизацией. Прямо сейчас у меня есть некоторые обработчики событий, которые привязаны внутри цикла foreach. Мне интересно, может ли этот стиль быть подвержен утечкам или неэффективному использованию памяти из-за создания закрытий. Есть ли какое-либо обоснование для этого мышления?MonoTouch - foreach против циклов (производительность)
ответ
закрытие применяется только в том случае, если обработчики событий являются анонимными методами (включая, но не ограничиваясь ими, лямбда-выражения). Если это так, у вас может возникнуть проблема. Но это должно быть хорошо, если вы удалите эти обработчики событий в соответствующее время.
Если вы говорите что-то вроде этого:
foreach (var item in items)
{
item.SomeEvent += delegate {
// do something
};
}
Тогда ответ производительность не заметно (в моем опыте MonoTouch так или иначе), поскольку компилятор просто создает класс с методом, таким же образом, в Компилятор Microsoft C#.
Самые большие узкие места производительности, с которыми я столкнулся в Monotouch, связаны с SQLite и анализируют DateTimes. Все остальное, в том числе сложные заявления LINQ, влетает в 3GS - я не уверен, что магия выполняется компилятором AOT, но я бы волновался, если он ползет до 0,5 или более секунд, чтобы выполнить задачу.
- 1. Как повысить производительность многих циклов foreach?
- 2. Производительность FOR против FOREACH в PHP
- 3. MonoTouch - поля против автоматических свойств
- 4. Для циклов против циклов while
- 5. Airplay SDK против Monotouch?
- 6. Производительность вложенных для циклов против функций массива в Javascript
- 7. PHPExcel несколько циклов foreach
- 8. PHP - множество циклов foreach?
- 9. C# - Лямбда против вложенных циклов
- 10. Производительность традиционных для цикла против Iterator/foreach в Java
- 11. Несколько циклов с PHP foreach?
- 12. Как разбить несколько циклов foreach?
- 13. Как использовать foreach для циклов?
- 14. Выполнение вложенных циклов + foreach + csh
- 15. Несколько циклов foreach в бритве
- 16. C++ Производительность циклов: инициализация переменных
- 17. Перебор IQueryable с Foreach против вызова ToList(), а затем делать Foreach - производительность
- 18. понимание рекурсии против циклов ruby
- 19. Foreach против для в
- 20. взрываться() против Foreach()
- 21. для цикла против foreach
- 22. Производительность auto_ptr против shared_ptr
- 23. Производительность ReceiveAsync против BeginReceive
- 24. Производительность массива против карты
- 25. Производительность тяги против cublas
- 26. Производительность ArrayList против HashSet
- 27. Производительность сокетов против труб
- 28. Производительность против правильности/предпочтения?
- 29. SQL: производительность против читаемости
- 30. Производительность против списков памяти
Если анонимные методы не используются, существует ли существенная разница в производительности при использовании foreach vs for? – kwcto
Единственный способ узнать профиль, но я уверен, что говорить не будет. –