Articles of 字典

用于C#的类似V8的哈希表?

我正在编程一个公寓和房屋租赁网站。 由于不会有超过10'000个物业出租,把所有物品都存入记忆体是没有问题的。 现在,当用户想要search特定的一个,他可以定义非常多的价格,房间,自动扶梯等filter。 每个属性都有一组非常不同的属性。 一个属性可能具有另一个属性不具有的属性。 所以,在C#中创build一个具有所有属性的类,而仅使用其中一些属性对我来说不是一个好主意。 我决定使用一个字典来代替。 稍后的一些基准testing中,我发现,Dictionary作为一个类访问属性的速度要慢大约40倍。 我也做了一个node.js的基准,它只是用对象作为字典。 这是非常有趣的,因为node.js中完全相同的程序比使用本地类的C#示例执行得更好。 其实我得到了以下结果: C#字典:〜820ms C#类:〜26ms Node.js对象:〜24ms 每个基准都按照相同的标准search1000万个物体。 我知道,由于Google的V8引擎,Node.js版本非常快。 你知道是否有一个C#类使用与V8引擎类似的技术,并获得几乎相同的性能? C#字典基准 namespace Test { class Program { static void Main(string[] args) { PropertyList p = new PropertyList(); long startTime = DateTime.Now.Ticks; for (int i = 0; i < 100; i++) { p.Search(); } Console.WriteLine((DateTime.Now.Ticks – startTime) / 10000); […]

在ESLint中replace按位操作

我试图应用这个代码: 如何通过点击Leaflet map (包含位运算符“<<”) 来获取tile的XYZ坐标 。 在运行它的环境(NodeJS,ExpressJS,AngularJS)中,代码在编译时由ESLint检查,但是我需要在链接上给出的解决scheme。 编译时出现这个错误。 意想不到的使用'<<'没有按位 根据这个链接: http ://eslint.org/docs/rules/no-bitwise – ESLint不允许按位运算符。 有没有办法绕过这个规则,如果没有,提供一个替代的计算,产生类似的结果按位操作“<<”? 我希望我的问题很清楚,谢谢。

为什么数组上的js映射修改原始数组?

我很困惑的是map()的行为。 我有这样的对象的数组: const products = [{ …, 'productType' = 'premium', … }, …] 我将这个数组传递给一个函数,该函数应该返回相同的数组,但所有产品都是免费的: [{ …, 'productType' = 'free', … }, …] function是: const freeProduct = function(products){ return products.map(x => x.productType = "free") } 其中返回以下数组: ["free", "free", …] 所以我重写了我的function是: const freeProduct = function(products){ return products.map(x => {x.productType = "free"; return x}) } 它按照预期返回数组。 但是! 这就是我放松的时刻,在这两种情况下我的原始产品arrays被修改。 […]