在vb.net中选择Case vs Datatable.findrow性能

时间:2015-03-29 00:50:44

标签: vb.net

我有vb.net函数,它经常引用,具有900个单独的case值的select case。它是按字母顺序排列的静态名称列表。如果我选择创建一个包含键列的表并使用数据表find-row查找值,那么有没有人有改善性能的经验?

创建select case语句很简单,但是有理论数量的选择案例选项,使用这些代码变得适得其反,应该采用更好的选项吗?

编辑更多信息

select语句是从电子表格公式创建的,因此不涉及任何输入。问题是select语句会打开一些变量,所以一个案例名称" Michael"姓氏=" blah",中间名=" blah",地址=" blah" ......,DOB和其他几个人。它完全静态且容易维护,这是我写这篇文章时能做的。我现在知道的更多,所以我正在寻求改进计划。我试图确定的是,如果我可以通过更改代码获得更好的性能,是否值得。

2 个答案:

答案 0 :(得分:3)

使用Dictionary,它专门用于存储键/值对,其性能针对查找进行了优化。如果您已经在应用程序中使用数据表,那么创建数据表才有意义,以避免维护额外数据结构的维护开销。否则引入新概念只会使事情复杂化,使其难以维护。

答案 1 :(得分:0)

我无法给你一个实际的基准,但请考虑一下:如果你有一个有序列表值的表,搜索一个随机值只需要平均搜索列表的一半。此搜索的代码只是一个简单的循环,性能非常适合于适度的列表。列表越长,您从更复杂的算法中获得的好处就越多。

如果使用选择案例,编译器可能会生成有效代码。没有测试(或者对编译器有深入的了解),没有一个好的方法可以回答你的问题,但测试这个并不难。

恕我直言,对于900个案例的列表,我会使用字母表和二进制搜索(http://en.wikipedia.org/wiki/Binary_search_algorithm)。你的代码看起来也会更好。