Iphone MonoTouch-foreach vs for loops(性能)

Iphone MonoTouch-foreach vs for loops(性能),iphone,foreach,closures,xamarin.ios,Iphone,Foreach,Closures,Xamarin.ios,通常我很清楚这样的考虑是过早的优化。现在我在foreach循环中附加了一些事件处理程序。我想知道,由于创建了闭包,这种样式是否容易泄漏或内存使用效率低下。这种想法是否有效?闭包仅适用于事件处理程序是匿名方法(包括但不限于lambda表达式)的情况。如果是这种情况,您可能会遇到问题。但只要您在适当的时间删除这些事件处理程序,就可以了。如果您正在讨论类似的内容: foreach (var item in items) { item.SomeEvent += delegate {

通常我很清楚这样的考虑是过早的优化。现在我在foreach循环中附加了一些事件处理程序。我想知道,由于创建了闭包,这种样式是否容易泄漏或内存使用效率低下。这种想法是否有效?

闭包仅适用于事件处理程序是匿名方法(包括但不限于lambda表达式)的情况。如果是这种情况,您可能会遇到问题。但只要您在适当的时间删除这些事件处理程序,就可以了。

如果您正在讨论类似的内容:

foreach (var item in items)
{
    item.SomeEvent += delegate {
        // do something
    };
}
然后答案是性能并不明显(在我的Monotouch体验中),因为编译器只是使用与Microsoft C#编译器相同的方法创建一个类


我在Monotouch中遇到的最大性能瓶颈是与SQLite相关的和解析日期时间。其他一切,包括复杂的LINQ语句,都会在3GS上运行-我不确定AOT编译器执行的是什么魔法,但我只担心执行任务的时间会延长到0.5秒或更长。

如果不使用匿名方法,使用foreach与for时是否存在显著的性能差异?唯一知道的方法是分析,但我很有信心说不会有。