标签: v8

当关联的Javascript对象在V8中被垃圾收集时,如何释放包装的C++对象?

V8的文档解释了如何创建包装C++对象的Javascript对象.Javascript对象保持指向C++对象实例的指针.我的问题是,假设您在堆上创建C++对象,如何在gc收集Javascript对象时收到通知,这样您就可以释放堆分配的C++对象?

javascript c++ v8

24
推荐指数
1
解决办法
5118
查看次数

为什么在nodejs的for循环中让var慢于var?

我写了一个非常简单的基准:

console.time('var');
for (var i = 0; i < 100000000; i++) {}
console.timeEnd('var')


console.time('let');
for (let i = 0; i < 100000000; i++) {}
console.timeEnd('let')
Run Code Online (Sandbox Code Playgroud)

如果你正在运行Chrome,可以在这里试试(因为NodeJS和Chrome使用相同的JavaScript引擎,虽然版本通常略有不同):

// Since Node runs code in a function wrapper with a different
// `this` than global code, do that:
(function() {
  console.time('var');
  for (var i = 0; i < 100000000; i++) {}
  console.timeEnd('var')


  console.time('let');
  for (let i = 0; i < 100000000; i++) {}
  console.timeEnd('let')
}).call({});
Run Code Online (Sandbox Code Playgroud)

结果令我惊讶:

var: 89.162ms
let: 320.473ms
Run Code Online (Sandbox Code Playgroud)

我在Node 4.0.0 && …

javascript v8 node.js ecmascript-6

24
推荐指数
1
解决办法
2565
查看次数

V8有预编译的二进制文件吗?

V8是node.js的重要组成部分,它使用Google V8 Javascript引擎.在我的Windows框[Windows 7/64位]上构建V8将花费我数小时的时间来抓取并安装我不熟悉的工具(尽管我使用的是Cygwin).如果那里有一些二进制安装程序,它会给我带来很多麻烦.谷歌搜索没有返回任何明显的位置 - 这里的大师知道吗?

即使你不知道我的确切环境,在这里分享其他人也会帮助同一条船上的人...

v8 node.js

23
推荐指数
1
解决办法
8964
查看次数

根据路由动态加载Node.js模块

我正在使用express在Node.js中做一个项目.这是我的目录结构:

root
|-start.js
|-server.js
|-lib/
|    api/
|        user_getDetails.js
|        user_register.js
Run Code Online (Sandbox Code Playgroud)

lib/api/目录有许多与API相关的JS文件.我需要做的是制作一种挂钩系统,无论何时从快速HTTP服务器请求其中一个API函数,它都会执行相应API处理程序中指定的任何操作.这可能令人困惑,但希望你能得到这个想法.

  1. Larry通过POST发送请求以获取用户详细信息.
  2. 服务器查找lib/api与该请求关联的功能.
  3. 服务器执行操作并将数据发送回Larry.

希望你能帮助我.我当时认为可以使用原型来完成,但不确定.

谢谢!

javascript api prototype v8 node.js

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

如何查看v8生成的机器代码?

有谁知道我怎么能看到v8从Javascript生成的实际机器代码?我已经到了这里Script::Compile(),src/api.cc但我无法弄清楚从哪里去.

javascript code-generation v8

22
推荐指数
4
解决办法
8893
查看次数

弹出阻止程序API-如何检查用户是否已启用它

我需要知道用户点击触发的按钮,window.open如果有稳定的API /预先知道用户是否主动拥有弹出窗口阻止程序?

在某些情况下,用户不知道/注意他们有弹出窗口阻止程序(阻止新窗口).我想通过点击允许来通过一些对话框/或者某些东西来通知他们.

javascript google-chrome v8 window popup-blocker

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

使用V8将JavaScript编译为本机代码

使用Google的V8引擎,是否真的可以将JavaScript编译为本机代码,将其保存为二进制文件,并在任何计算机上通过我的软件环境执行它?

javascript c++ v8 native-code

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

为什么封装的Javascript函数有这么大的性能差异?

所以我有这个简单的代码:

function Run () {
  var n = 2*1e7;
  var inside = 0;
  while (n--) {
    if (Math.pow(Math.random(), 2) +
        Math.pow(Math.random(), 2) < 1)
      inside++;
  }

  return inside;
}

var start = Date.now();
Run();
console.log(Date.now() - start);
Run Code Online (Sandbox Code Playgroud)

它会输出大约335毫秒的时间.那很不错.但是,如果我像这样封装Run函数:

var d = Date.now();
(function Run () {
  var n = 2*1e7;
  var inside = 0;
  while (n--) {
    if (Math.pow(Math.random(), 2) +
        Math.pow(Math.random(), 2) < 1)
      inside++;
  }

  return inside;
})();
console.log(Date.now() - d);
Run Code Online (Sandbox Code Playgroud)

它将输出18319ms,这比以前的情况要糟糕得多.为什么是这样 ?

此外,如果重要,我在控制台的Chrome 26.0.1410.63上运行它.在node.js上,两个片段在控制台上都表现良好.

javascript compiler-construction optimization performance v8

21
推荐指数
1
解决办法
582
查看次数

如何在Node.js/V8中调试/分析极长的GC暂停

我试图在一个相对复杂的Node.js服务器应用程序中分析内存/ GC问题.即使在非常适中的负载下,它也会在明显的时期内变得无法响应,并且随着时间的推移这些停顿会变得更长.使用--trace-gc参数运行表明可能导致极长的垃圾回收时间:

[4805]      537 ms: Mark-sweep 17.6 (46.4) -> 10.3 (47.4) MB, 20 ms [allocation failure] [GC in old space requested].
[4805]     1338 ms: Mark-sweep 31.3 (58.4) -> 19.2 (57.2) MB, 40 ms [allocation failure] [promotion limit reached].
[4805]     2662 ms: Mark-sweep 58.0 (79.2) -> 43.9 (85.2) MB, 109 ms [Runtime::PerformGC] [promotion limit reached].
[4805]     4014 ms: Mark-sweep 90.1 (111.5) -> 70.6 (113.9) MB, 114 ms [allocation failure] [promotion limit reached].
[4805]     7283 ms: Mark-sweep 129.7 (153.9) -> …
Run Code Online (Sandbox Code Playgroud)

javascript garbage-collection memory-leaks v8 node.js

21
推荐指数
1
解决办法
5960
查看次数

当用作Node.js的JS Engine时,Microsoft的ChakraCore是否比Google的V8提供任何性能优势

[ 我编辑了我的问题,将场景缩小到只有Node.js. 请重新打开它.这是一个有用的问题,正如ChakraCore还处于很小的年龄时,可能会在未来及时提出正确的答案.但这个问题是有效的,应该在这里 ]

我们都知道/阅读/听说过谷歌V8引擎的荣耀,以及它如何让node.js成为多年来的美丽.

但现在我们可以选择在Microsoft的ChakraCoreGoogle的V8之间作为我们首选的JavaScript引擎进行选择,我想知道是否有人有任何证据或测试用例,他们发现其中一个比nodejs更有效.

请回复一些事实和结果,因为有人不应该使用/选择Chakra只是因为他/她喜欢微软或同样适用于V8和Google.

谢谢.

javascript c++ v8 node.js chakra

21
推荐指数
2
解决办法
8632
查看次数