Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将线展平?_Javascript_Node.js_Google Chrome_V8 - Fatal编程技术网

Javascript 如何将线展平?

Javascript 如何将线展平?,javascript,node.js,google-chrome,v8,Javascript,Node.js,Google Chrome,V8,JavaScript V8引擎(Chrome,node)在内部使用constring结构来表示连接的字符串 我可以在网上找到一种将此结构展平为简单字符串的方法,即使用String.charCodeAt(0)。然而,这似乎不再有效(在Chrome54上测试) 有没有另一种方法可以强制V8压扁字符串结构 创建后我使用这些字符串的方式将受益于扁平化字符串(例如,减少内存使用)。Number(str)仍然扁平化内部字符串。有一个npm模块,flatstr,就是这样做的。这样,您的代码就不会充满看似随机的

JavaScript V8引擎(Chrome,node)在内部使用constring结构来表示连接的字符串

我可以在网上找到一种将此结构展平为简单字符串的方法,即使用
String.charCodeAt(0)
。然而,这似乎不再有效(在Chrome54上测试)

有没有另一种方法可以强制V8压扁字符串结构


创建后我使用这些字符串的方式将受益于扁平化字符串(例如,减少内存使用)。

Number(str)
仍然扁平化内部字符串。有一个npm模块,flatstr,就是这样做的。这样,您的代码就不会充满看似随机的
Number()
调用。请参阅。

我对节点的内部工作原理一无所知,但是从连接的字符串创建新的
字符串是否会达到您的目的?例如,
新字符串(myConcatString)
。或者这对性能影响太大?@ChrisW-no,
newstring()
不执行展平。相反,它只是围绕着与源代码相同的内部表示创建一个包装器。我想我没有什么有用的输入:/I我不认为应该有办法强制引擎使用特定的内部表示,因为这可能很容易改变。你在做什么呢?a)你非常关心内部格式,b)扁平字符串会大大改进内部格式?请发布一些代码。@Bergi-我的案例是一个BI应用程序,它可以在浏览器中处理多达一百万行。我预先做了很多索引工作,扁平化有助于减少内存使用,并可能提高
indexOf
调用之类的性能。虽然这似乎确实扁平化了
constring
实例,还有一个潜在的缺点-在我的测试中,如果字符串在内部存储为
InternalizedString
,调用
Number(str)
似乎会将其转换为简单的
string
OneByteString
,因此可能会增加内存使用。因此,如果解决方案不会产生更糟糕的结果,则必须单独调查每个用例。