Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
String JS DOM元素’;内容字符串属性:当前引擎中的内存管理和计算_String_Performance_Dom_Memory Management_Browser - Fatal编程技术网

String JS DOM元素’;内容字符串属性:当前引擎中的内存管理和计算

String JS DOM元素’;内容字符串属性:当前引擎中的内存管理和计算,string,performance,dom,memory-management,browser,String,Performance,Dom,Memory Management,Browser,在DOM中,和类型具有许多动态属性,例如,Node.textContent和Element.innerHTML,它们返回节点内容的字符串表示形式 DOM规范仅说明这些方法只是“返回”DOMStrings,即strings。当然,它们并没有指定何时以及如何分配和计算这些字符串。对于文本节点,实现显然可以直接返回其纯文本字符串内容。但是Elements必须创建包含任何子元素的标记和内容的新字符串 据我所知,一个实现可能会为这些字符串分配内存,并在四个点计算它们的值: 当第一次创建元素时,立即 在元素

在DOM中,和类型具有许多动态属性,例如,
Node.textContent
Element.innerHTML
,它们返回节点内容的字符串表示形式

DOM规范仅说明这些方法只是“返回”
DOMStrings
,即
string
s。当然,它们并没有指定何时以及如何分配和计算这些字符串。对于文本节点,实现显然可以直接返回其纯文本字符串内容。但是
Element
s必须创建包含任何子元素的标记和内容的新字符串

据我所知,一个实现可能会为这些字符串分配内存,并在四个点计算它们的值:

  • 当第一次创建
    元素时,立即
    
  • 元素
    创建之后的某个时间延迟安排
  • 在从
    元素
    获取字符串属性时,根据需要延迟执行
  • 或者,在第一次使用字符串时,根据需要(即,返回的字符串使用特殊的、外部不可区分的实现,该实现由
    元素
    的字符串属性立即返回,但在需要时动态生成其值)
  • 这些方法还将确定何时释放字符串的内存。前两种技术本质上是将字符串缓存在
    元素
    对象中,它们从
    元素
    创建对字符串的引用,并且在
    元素
    被释放之前,字符串不会被释放。第三和第四种技术可以但不需要从
    元素创建这样的引用;只要释放了
    元素
    的其他引用,字符串的内存可能早在该元素
    被释放之前就被释放。此外,一个实现可能基于某种启发式使用两种、三种或所有这些可能性


    现代浏览器引擎使用哪些技术?对于任何类型的DOM操作和文本检索,这个问题在计算时间和内存分配方面都有明显的性能影响。但据我所知,这些属性的性能特征未知或没有文档记录。

    这类事情通常是由而不是由来完成的,因此我不确定JavaScript标记是否值得使用。@MikeMcCaughan我能找到的最好的另一个标记是#browser,我很难在它和#JavaScript之间做出选择。我选择了前者,因为现在的DOM当然意味着JavaScript,#浏览器作为一个主题比#JavaScript更广泛,我想让跟踪#JavaScript的人知道这个问题。但如果你有更好的选择,我可以用它来替换javascript。