标签: javascript-engine

浏览器是否在每个页面加载时解析javascript?

浏览器(IE和Firefox)每次页面刷新时都会解析链接的javascript文件吗?

他们可以缓存文件,因此我猜他们不会每次都尝试下载它们,但由于每个页面基本上是分开的,我希望它们可以拆除任何旧代码并重新解析它.

这是低效的,虽然完全可以理解,但我想知道现代浏览器是否足够聪明以避免站点内的解析步骤.我在想一个网站使用javascript库的情况,比如ExtJS或jQuery等.

javascript javascript-engine browser-cache

185
推荐指数
3
解决办法
3万
查看次数

Javascript引擎优势

我现在对JavaScript引擎感到困惑.我知道V8是一个大问题,因为它将JavaScript编译为本机代码.

然后我开始阅读Mozilla SpiderMonkey,据我所知,它是用C语言编写的,可以编译JavaScript.那么这与V8有什么不​​同呢?如果这是真的,为什么Firefox不这样做呢?

最后,Rhino是否真的将JavaScript编译为Java字节代码,以便您获得Java的所有速度优势?如果没有,为什么人们在桌面上编写脚本时不能运行V8?

javascript v8 rhino spidermonkey javascript-engine

57
推荐指数
3
解决办法
3万
查看次数

为什么新的慢?

基准:

JsPerf

不变量:

var f = function() { };

var g = function() { return this; }
Run Code Online (Sandbox Code Playgroud)

测试:

下面按预期速度顺序排列

  • new f;
  • g.call(Object.create(Object.prototype));
  • new (function() { })
  • (function() { return this; }).call(Object.create(Object.prototype));

实际速度:

  1. new f;
  2. g.call(Object.create(Object.prototype));
  3. (function() { return this; }).call(Object.create(Object.prototype));
  4. new (function() { })

问题:

  1. 当您交换fg内联匿名函数时.为什么new(测试4.)测试更慢?

更新:

具体是什么导致new要慢时fg内联.

我对ES5规范的引用或对JagerMonkey或V8源代码的引用感兴趣.(请随意链接JSC和Carakan源代码.哦,如果他们愿意,IE团队可以泄漏Chakra源代码).

如果您链接任何JS引擎源,请解释它.

javascript v8 javascript-engine ecmascript-5

30
推荐指数
2
解决办法
2726
查看次数

PHP无头浏览器?

是否有一个用于PHP的无头浏览器库?想要内置JS引擎的东西.FOSS首选.

php browser javascript-engine headless-browser

18
推荐指数
2
解决办法
2万
查看次数

任何用于.NET/C#的Javascript引擎?

我正在寻找一个.NET的开源JavaScript引擎.谢谢.

javascript c# javascript-engine

16
推荐指数
3
解决办法
1万
查看次数

Object.observe()如何影响性能?

所述Object.observe()的JavaScript API允许任何一段代码以接收改变通知任何JavaScript对象的所有属性的变化.

这是否会严重影响JavaScript引擎(即V8)可以执行的代码生成和性能优化?如果必须生成更改通知,现在生成的本机代码似乎必须检查对象的每次写入.无法静态确定给定对象是否设置了通知.因此检查无法优化.

似乎任何符合要求的JavaScript引擎现在都因此API而导致性能永久严重损失.

javascript performance javascript-engine object.observe

13
推荐指数
1
解决办法
4642
查看次数

如何查看内置javascript函数的来源?

例如alert(),Object(),String()等.

我怎么看这些函数背后的代码?我是否需要理解V8等引擎的语言并通读它,或者是否有更简单的解决方案.

javascript built-in javascript-engine

13
推荐指数
1
解决办法
2259
查看次数

如何在Android中检测运行时使用的javascript引擎(v8或JSC)?

较新版本的Android(> 2.2)包括v8 javascript引擎,而旧版本只有JSC.但是,根据http://blogs.nitobi.com/joe/2011/01/14/android-your-js-engine-is-not-always-v8/,运行时使用的javascript引擎似乎依赖于build-time(JS_ENGINE)中出现的环境变量,以及设备的硬件规格:

# The default / alternative engine depends on the device class.
# On devices with a lot of memory (e.g. Passion/Sholes), the
# default is V8. On everything else, the only choice is JSC.
Run Code Online (Sandbox Code Playgroud)

我的问题是:有什么方法可以确定在网页,嵌入式WebView或应用程序中使用哪个javascript引擎?

如果答案是否定的,那么有人知道Android模拟器使用了哪个JS引擎吗?


我问这个的原因是因为这个问题:http://code.google.com/p/android/issues/detail?id = 12987

基本上,可能是JSC中的javascript-to-java桥在Android 2.3.X上被破坏了,这会影响我正在尝试编写的应用程序.我在我的模拟器上看到了JNI深处的某个段错误,但是我测试过的少数几个物理设备上没有.我试图确定这是否只是一个模拟器,只有JSC的东西,或者完全不同的东西.

javascript android v8 javascript-engine

12
推荐指数
2
解决办法
1万
查看次数

Javascript JSON.stringify函数不起作用

我试图将JS对象转换为JSON.

JSON.stringify({a:1, toJSON: function(){}})
Run Code Online (Sandbox Code Playgroud)

原生JSON stringify未按预期工作.JSON stringify在JS对象内部执行toJSON函数.我已经覆盖了如下的本机代码,

// Adding try catch for non JSON support browsers.
try{
 _jsonStringify = JSON.stringify;
 JSON.stringify = function(object){
    var fnCopy = object.toJSON; 
    object.toJSON = undefined;
    var result =  _jsonStringify(object);
    object.toJSON = fnCopy;
    return result;      
 };
}catch(e){}
Run Code Online (Sandbox Code Playgroud)

它工作正常.有没有其他更好的方法来做到这一点?在本机代码中是否有任何特定原因在输入对象中执行toJSON函数?

javascript browser json javascript-engine

12
推荐指数
1
解决办法
4万
查看次数

主要javascript引擎中JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少?

请使用以下代码示例:

var myObject = {};
var i = 100;

while (i--) {
    myObject["foo"+i] = new Foo(i);
}

console.log(myObject["foo42"].bar());
Run Code Online (Sandbox Code Playgroud)

我有几个问题.

主要引擎(IE,Mozilla,Chrome,Safari)使用什么样的数据结构来存储键值对?我希望它是一种二进制搜索树,但我认为它们可能会使用链表(因为迭代是按插入顺序完成的).

如果他们确实使用搜索树,它是自我平衡的吗?因为具有传统搜索树的上述代码将创建不平衡树,导致用于搜索的O(n)的最坏情况场景,而不是用于平衡树的O(log n).

我只是问这个,因为我将编写一个库,需要从数据结构中有效地检索密钥,虽然我可以实现自己的或现有的红黑树,但我宁愿使用本机对象属性,如果它们是足够有效.

javascript time-complexity javascript-engine javascript-objects data-structures

10
推荐指数
1
解决办法
3434
查看次数