对于C#仿真软件模块(3D网格),我有一个由3 ^ 6个案例组成的开关/案例块(每个6个邻居有3个条件)。除了内容(每个块的大小大致相同)之外,它还会导致大约9000 LoC。
考虑到不同条件的数量,我怀疑有什么比使用switch / case这样做更高效,并且在运行它时,它的速度相当快。但是,在第一次调用时,程序会冻结几秒钟。在不重新启动软件的情况下重复计算时,它会保持快速。调试和发布的效果相同。
Is "else if" faster than "switch() case"?中接受的答案表明,switch / case是通过哈希列表实现的。这个列表真的是在运行时创建的吗?如果是这样,它是否可以以某种方式进行优化,因此每次发布时都不需要几秒钟?如果没有,延时从何而来? (我已经检查过,当注释掉开关/盒子时,延迟消失了。)
非常感谢任何帮助或提示!