Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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 缓存pagedown转换器对象有什么意义吗?_Javascript_Pagedown - Fatal编程技术网

Javascript 缓存pagedown转换器对象有什么意义吗?

Javascript 缓存pagedown转换器对象有什么意义吗?,javascript,pagedown,Javascript,Pagedown,缓存转换器对象有什么意义吗?建造成本有多高?或者我可以这样做吗 function convertMarkdown(str) { var converter = new Markdown.Converter(); return converter.makeHtml(str); } 它取决于Markdown.Converter函数以及调用它的频率,但您可以轻松创建一个包含对转换器实例引用的函数,这样就不需要每次调用都重新创建它: var convertMarkdown = (fun

缓存转换器对象有什么意义吗?建造成本有多高?或者我可以这样做吗

function convertMarkdown(str) {
    var converter = new Markdown.Converter();
    return converter.makeHtml(str);
}

它取决于
Markdown.Converter
函数以及调用它的频率,但您可以轻松创建一个包含对转换器实例引用的函数,这样就不需要每次调用都重新创建它:

var convertMarkdown = (function{
    var converter = new Markdown.Converter();
    return function(str){
      return converter.makeHtml(str);
    }
})()

它取决于
Markdown.Converter
函数以及调用它的频率,但您可以轻松创建一个包含对转换器实例引用的函数,这样就不需要每次调用都重新创建它:

var convertMarkdown = (function{
    var converter = new Markdown.Converter();
    return function(str){
      return converter.makeHtml(str);
    }
})()

converter对象构造起来相当便宜。通常不会进行重大初始化。在我的(相当结实的)机器上快速测量:创建一百万个转换器对象

  • Chrome需要8秒(5倍)
  • Opera需要14秒(10倍)
  • IE需要4秒(3倍)
  • Safari 5需要2.5秒(5倍)
  • Firefox需要44秒(20倍)
因此,即使在最慢的情况下,每个对象也只有44µs。括号中的数字表示“与构建新日期()相比,这大约要慢多少?”

所以我要说的是,在大多数情况下,这不会成为你的瓶颈,如果你只是偶尔转换一次降价,这不会产生实际的影响

与使用converter对象的实际成本进行比较。创建一个转换器对象,然后测量处理字符串
“Hello”
(请注意,此字符串甚至不包含任何格式)所需的时间一百万次

  • Chrome需要13秒
  • 歌剧需要86秒
  • 他需要17秒
  • Safari 5需要25秒
  • Firefox需要200秒
为了处理一些“真实”的降价数据——这个答案的内容——一百万次,Chrome需要800秒左右的时间(我没有在其他浏览器中测量)。因此,在实际应用中,转换器的构建时间与总体性能关系不大

除非你真的只调用它一两次,否则我个人还是会缓存这个对象,因为我觉得它更可读

比较

var s = new Markdown.Converter().makeHtml(src);
vs

或(使用)

–当在更大的上下文中浏览该代码时,第一个版本需要再看一眼,以注意到对象的创建只是行目的的次要部分


如果您在converter对象上注册插件,创建过程甚至需要多条语句,这使得只需创建一次对象就更好了。

converter对象的构建成本相当低。通常不会进行重大初始化。在我的(相当结实的)机器上快速测量:创建一百万个转换器对象

  • Chrome需要8秒(5倍)
  • Opera需要14秒(10倍)
  • IE需要4秒(3倍)
  • Safari 5需要2.5秒(5倍)
  • Firefox需要44秒(20倍)
因此,即使在最慢的情况下,每个对象也只有44µs。括号中的数字表示“与构建新日期()相比,这大约要慢多少?”

所以我要说的是,在大多数情况下,这不会成为你的瓶颈,如果你只是偶尔转换一次降价,这不会产生实际的影响

与使用converter对象的实际成本进行比较。创建一个转换器对象,然后测量处理字符串
“Hello”
(请注意,此字符串甚至不包含任何格式)所需的时间一百万次

  • Chrome需要13秒
  • 歌剧需要86秒
  • 他需要17秒
  • Safari 5需要25秒
  • Firefox需要200秒
为了处理一些“真实”的降价数据——这个答案的内容——一百万次,Chrome需要800秒左右的时间(我没有在其他浏览器中测量)。因此,在实际应用中,转换器的构建时间与总体性能关系不大

除非你真的只调用它一两次,否则我个人还是会缓存这个对象,因为我觉得它更可读

比较

var s = new Markdown.Converter().makeHtml(src);
vs

或(使用)

–当在更大的上下文中浏览该代码时,第一个版本需要再看一眼,以注意到对象的创建只是行目的的次要部分


如果您在converter对象上注册插件,创建过程甚至需要多条语句,这使得只需创建一次对象就更好了。

很公平。不过,我还是想知道为什么我首先需要这么做。:-)很公平。不过,我还是想知道为什么我首先需要这么做。:-)