MonoTouch - foreach vs for循环(性能)

时间:2010-05-23 02:49:29

标签: iphone foreach closures xamarin.ios

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果你在谈论这样的事情:

foreach (var item in items)
{
    item.SomeEvent += delegate {
        // do something
    };
}

然后答案是性能不明显(无论如何在我的Monotouch体验中),因为编译器只是使用与Microsoft C#编译器相同的方法创建一个类。

我在Monotouch中遇到的最大性能瓶颈是与SQLite相关的,并解析了DateTimes。其他所有内容,包括复杂的LINQ语句都在3GS上飞行 - 我不确定AOT编译器执行了什么魔术,但我只担心它会在0.5秒或更长时间内执行任务。