我们试图在 .NET 中对 FileInfo 对象的集合进行排序。我们实现了 IComparer 以确保 FileInfo 对象根据我们的标准进行排序。然后我们注意到对 FileInfo 对象进行排序的性能比整数要慢很多倍。凭直觉(并记住引用在 C 中是如何工作的),我们能够通过使用局部变量来限制我们引用 FileInfo 属性的次数来提高性能。
我的想法是访问局部变量比访问对象上的属性更快。我认为这在非托管代码的世界中是有意义的,在那里我实际上可以想象堆栈是如何工作的以及如何引用值。但是,我知道托管代码的世界在幕后可能会更加复杂。我的问题是:这些非托管代码中的内存管理和程序流程的基本思想可以普遍地投射到托管代码的世界中吗?
最终在 KeeperOfTheSoul 的帮助下,我们能够追踪到我们是如何模拟 FileInfo 对象的。出于这个原因,我在这个问题中添加了一个 RhinoMock 标签。