当我们从“单一系统”应用程序转移到可以将任务分配到分布式处理节点的应用程序时,我们目前正在更改大量代码。现有代码混合使用非托管和现在托管的C ++代码,但也使用C#代码在节点和控制器之间提供WCF接口。
作为此举的结果,我看到的可预见的未来可能会保留的公共代码模式是将整数ID值从MFC CArray基本转换为托管列表以启用WCF上的序列化。目前的模式是:
List<int>^ fixtures = gcnew List<int>(aFixtureIds.GetCount());
for(int i = 0; i < aFixtureIds.GetCount(); i++) //aFixtureIds is of MFC type CArray<int,int>
{
fixtures->Add(aFixtureIds[i]);
}
我们也反过来使用类似的东西,如果返回一个List,我们可以通过在循环中迭代它并调用Add来将它转换为调用函数的CIntArray。
我很欣赏以上内容看起来并不是很密集但是它确实被调用了很多 - 是否有更好的模式来执行这个基本的List&lt; - &gt; CArray转换会耗费更少的处理时间?这是编译器可以有效优化的那种代码(我怀疑不是,但我愿意纠正)?列表大小各不相同,但通常是1到数万个项目,可能更多。
答案 0 :(得分:0)
一些建议虽然很多都取决于您的申请细节: