我们的应用程序使用了大量字典,这些字典具有不经常更改的多级查找.我们正在研究转换使用字典进行大量查找的一些关键代码,以使用替代结构 - 更快的查找,点亮内存/ gc.这让我们比较了各种可用的词典/库 -
Dictionary(System.Collections.Generics.Dictionary-SCGD) ,ImmutableDictionary,.C5.HashDictionaryFSharpMap
运行包含各种项目的以下程序 - 100,1000,10000,100000 - 表示词典在大多数范围内仍然是赢家.第一行表示集合中的项目.MS/Ticks将随机执行x查找所花费的时间(代码如下).
项目 - 100
SCGD - 0 MS - 50 Ticks
C5 - 1 MS - 1767 Ticks
Imm - 4 MS - 5951 Ticks
FS - 0 MS - 240 Ticks
项目 - 1000
SCGD - 0 MS - 230 Ticks
C5 - 0 MS - 496 Ticks
Imm - 0 MS - 1046 Ticks
FS - 1 MS - 1870 …
我们正在尝试用新的ASP.NET Web API替换以前的DefaultControllerFactory,以更好地处理REST/XML调用.搜索Web总是指向实现System.Web.Http.Dependencies.IDependencyResolver,然后处理GetService()接口所需的其他一些方法.
然而,它似乎是缓存ApiController实例和任何新的控制器,它似乎没有解决.由于性能问题,很难在启动期间提供所有可能的ApiController实例.
DefaultControllerFactory 允许提供控制器实例和缓存"命中"条目,但是当一个instane无法延迟加载时抛出错误.
是否还需要实施其他过载/控制器工厂方法?
到目前为止搜索没有产生任何命中,但任何指针都会很棒.感谢您的时间.
有没有办法唯一识别数据库?
如果我们要将数据库复制到另一台机器,则假定此实例不同.我检查了主表,但无法识别任何可以识别此信息的信息.
STRAGG函数实现将结果作为单个列值返回.Oracle的实现似乎非常通用,可以用于不同的表(和关系).可以为SQL Server实现类似的行为.在Web上进行搜索似乎只返回硬编码实现而不是通用实现.我们有任何已知的Sql服务器解决方案吗?