Tag: memoization

用Node.jslogging遍历的fspath

我有一个工具,正在通过某些文件的文件系统进行并发search。 当该工具通过fssearch时,可能会发现它需要在原来不包含在search中的目录中进行search。 我应该做的是记住每个已经开始search的目录。 我想不出一个更好的方式来记忆文件path,除非存储在像这样的散列: interface IMemoizationMap { [key: string]: boolean } 所以可能看起来像: const hash = { '/Users/you/projects/x': true, '/Users/you/projects/x/lib': true, '/Users/you/projects/x/lib': true, … … '/Users/you/some-stuff/z': true }; 然后我做一个快速查找,看看我是否需要search某个目录。 这个解决scheme令人感到尴尬的是,哈希中的值几乎可以是任何东西 – 真,假,未定义的。 这是记忆遍历文件path的最好方法吗? 撇开,就是performance key in hash 一样 hash[key] ? 如果是这样的话,那么存储的值就会有一些值: 当一个目录开始被search时,我可以使这个值为false,然后当目录search结束时,我可以将值翻转为true。 那么价值至less意味着什么 。

JSON.stringify()在V8中是确定性的吗?

我还没有看到(还?) JSON.stringify在Node.JS中是非确定性的。 不能保证它在规格级别上是确定性的。 但是V8呢? 它的实现是否具有确定性? 有没有保证它为未来的V8版本保持确定性? 编辑: 对于确定性,我的意思是,无论json_str的值是什么,下面的断言都是正确的。 (给定值是一个有效的JSONstring。) const obj = JSON.parse(json_str); assert(JSON.stringify(obj)===JSON.stringify(obj)); // always true 编辑2: 其实,我也有兴趣下面的说法是真实的 if( deepEqual(obj1, obj2) ) { assert(JSON.stringify(obj1)===JSON.stringify(obj2)) } 事实并非如此(见答案)。