标签: v8

“v8::ArrayBuffer”中的“GetContents”

我使用的是 Mac M1,刚刚升级到 Node 14.17.6LTS。

我尝试使用电子构建器(22.11.7)重建better_sqlite3(7.4.3),但出现以下错误:

“v8::ArrayBuffer”中没有名为“GetContents”的成员

有什么想法如何解决这个问题吗?提前致谢!

gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  SOLINK_MODULE(target) Release/.node
  CXX(target) Release/obj.target/fse/fsevents.o
In file included from ../fsevents.cc:6:
In file included from ../../nan/nan.h:2884:
../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer'
      data   = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
Run Code Online (Sandbox Code Playgroud)

v8 electron electron-builder better-sqlite3

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

带V8的Node.js适合有限的内存设备?

想知道具有V8引擎的node.js是否适合部署在有限的存储设备(例如256mb)上并与其他进程并行运行.

我读到它将连接机器的资源.有没有办法限制V8引擎本身的内存和处理使用?

v8 node.js

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

部署Node.js Web应用程序时要查看哪些最重要的统计信息?

首先 - 关于我的背景:我已经编程了一段时间(此时为10年),并且在编写想法时非常称职.我在一年多前开始从事网络应用程序编程工作,幸好发现了nodeJS,它使网络应用程序的创建感觉更像传统的编程.现在,我有一个node.js应用程序,我已经开发了一段时间,现在正在网络上生产.我的主要困惑源于这样一个事实,即我对Web开发世界很陌生,并且在监控我的应用程序时并不知道什么是重要的,什么是不重要的.

我正在使用Joyent SmartMachine,看看他们提供的分析选项有点压倒性.有很多不同的选项和配置,我不知道每个分析真正起作用的目的.对于下面的问题,我会感谢任何答案,无论是针对Joyent的云分析还是完全一般的.


问题一

现在,我主要关心的是弄清楚我的应用程序如何利用我运行的服务器.我想知道我的应用程序是否分配了适当数量的资源.它收到的请求数量是否会使服务器过度使用,还是需要额外的资源?为此目的,为NodeJS应用程序查看哪些分析非常重要?(如果有不同的话,在单独的服务器上使用MongoDB和Redis)


问题二

在管理正在生产的服务器时,还有哪些其他统计数据通常非常重要?我习惯于运行一次以执行特定操作的程序(例如,一旦计算出图像就完成运行的光线跟踪器),而不是连续运行并与许多客户端交互的web应用程序.我确信有很多事情对长期服务器管理员来说是显而易见的,而不是像我这样的新手.


问题三

在具体处理NodeJS时要注意什么?在处理NodeJS的单线程事件循环与更标准的服务器系统时,哪些统计/分析变得特别重要?

我还有其他关于数据库如何发挥作用的问题,但我认为这已经足够了...

monitoring analytics v8 node.js joyent

20
推荐指数
2
解决办法
1762
查看次数

V8如何优化/内联?

我想知道是否有可能获得V8如何优化和内联的知识.

我创建了三个简单的测试函数,它们都以度为单位计算角度的正弦值.我将它们全部放入闭包中,以便V8能够内联局部变量.


1.使用预先计算的常数Math.PI / 180,然后执行Math.sin(x * constant).

我用过这段代码:

var test1 = (function() {
  var constant = Math.PI / 180; // only calculate the constant once

  return function(x) {
    return Math.sin(x * constant);
  };
})();
Run Code Online (Sandbox Code Playgroud)

2.动态计算常数.

var test2 = (function() {
  var pi = Math.PI; // so that the compiler knows pi cannot change
                    // and it can inline it (Math.PI could change
                    // at any time, but pi cannot)

  return function(x) {
    return Math.sin(x …
Run Code Online (Sandbox Code Playgroud)

javascript optimization google-chrome v8 inline

19
推荐指数
1
解决办法
3154
查看次数

javascript Arrays实际上是作为数组实现的吗?

javascript之间的区别Array,Object并不是很大.实际上它似乎Array主要添加了length字段,因此您可以将Arrays和Objects用作数字数组:

var ar = new Array();
ar[0] = "foo";
ar["bar"] = "foo";

var ob = new Object();
ob[0] = "foo";
ob["bar"] = "foo";

assert(ar[0] == ob[0] == ar["0"] == ob["0"] == ar.bar == ob.bar); // Should be true.
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,在流行的JavaScript引擎(V8,JavaScriptCore,SpiderMonkey等)中,这是如何处理的?显然,我们不希望我们的数组实际存储为具有键值的哈希映射!我们怎样才能合理地确定我们的数据是否存储为实际数组?

据我所知,引擎可以采取一些方法:

  1. Array实现方式与Object- 使用字符串键的关联数组完全相同.
  2. Array是一个特殊情况,一个std::vector支持数字键的类似数组,以及一些密度启发式,以防止疯狂的内存使用ar[100000000] = 0;
  3. Array是相同的Object,并且所有对象都获得启发式,以查看使用数组是否更有意义.
  4. 我没有想到的东西非常复杂.

如果有一个合适的阵列类型(咳嗽 WebGL类型阵列咳嗽),这真的会更简单.

javascript arrays performance v8 spidermonkey

19
推荐指数
2
解决办法
4667
查看次数

使用节点,为什么代码使用"use strict"更快?

我从来不知道use strict加速运行时间,但是一个简单的方法use strict是让我的基准测试速度更快,速度慢一点(速度慢一倍).这是怎么回事?

//
// RUN WITH AND WITHOUT THIS
//
"use strict";

var assert = require('assert');

var slice = [].slice;

function thunkify_fast(fn){
  assert('function' == typeof fn, 'function required');

  return function(){
    var args = new Array(arguments.length);
    for(var i = 0; i < args.length; ++i) {
      args[i] = arguments[i];
    }
    var ctx = this;

    return function(done){
      var called;

      args.push(function(){
        if (called) return;
        called = true;
        done.apply(null, arguments);
      });

      try {
        fn.apply(ctx, args);
      } catch (err) {
        done(err); …
Run Code Online (Sandbox Code Playgroud)

optimization v8 strict node.js

19
推荐指数
3
解决办法
3616
查看次数

为什么node不将Math.tan(Math.PI/2)评估为Infinity但Chrome V8会这样做?

在节点命令行界面中运行时:

> Math.tan(Math.PI/2)
16331778728383844 
Run Code Online (Sandbox Code Playgroud)

但在Chrome中:

> Math.tan(Math.PI/2)
Infinity
Run Code Online (Sandbox Code Playgroud)

是不是都使用相同的V8引擎?

节点的结果甚至不等于JavaScript中最大"整数"值.

javascript math v8 infinity node.js

19
推荐指数
2
解决办法
1245
查看次数

是否有任何破解v8日期解析器的解决方法?

V8日期解析器坏了:

> new Date('asd qw 101')
Sat Jan 01 101 00:00:00 GMT+0100 (CET)
Run Code Online (Sandbox Code Playgroud)

我可以像这样使用脆弱的正则表达式:

\d{1,2} (jan|feb|mar|may|jun|jul|aug|sep|oct|nov|dec) \d{1,4}
Run Code Online (Sandbox Code Playgroud)

但它太脆弱了.我不能依赖new Date (在V8中发布)并且也无法帮助我,因为时刻正在摆脱日期检测(github issue-thread).

是否有任何破解v8日期解析器的解决方法?

要清楚.我们有Gecko和V8都有Date.V8破坏了日期,Gecko已经工作了.我需要DateGecko中的from(Firefox).

更新:它肯定是破解了解析器https://code.google.com/p/v8/issues/detail?id=2602
不, Status: WorkingAsIntended

javascript datetime v8 date node.js

19
推荐指数
3
解决办法
1463
查看次数

在Nodejs中管理大量的回调递归

在Nodejs中,几乎没有阻塞I/O操作.这意味着几乎所有nodejs IO代码都涉及许多回调.这适用于对数据库,文件,进程等进行读写操作.典型示例如下:

var useFile = function(filename,callback){
    posix.stat(filename).addCallback(function (stats) {
        posix.open(filename, process.O_RDONLY, 0666).addCallback(function (fd) {
            posix.read(fd, stats.size, 0).addCallback(function(contents){
                callback(contents);
            });
        });
    });
};

...

useFile("test.data",function(data){
    // use data..
});
Run Code Online (Sandbox Code Playgroud)

我期待编写代码来进行许多 IO操作,所以我希望编写很多回调函数.我对使用回调很满意,但我担心所有的递归.我是否有可能遇到过多的递归并在某个地方吹过堆栈?如果我通过数千次回调对我的键值存储进行数千次单独写入,我的程序最终会崩溃吗?

我误解或低估了影响吗?如果没有,有没有办法解决这个问题,同时仍然使用Nodejs的回调编码风格?

javascript recursion v8 callback node.js

18
推荐指数
1
解决办法
7179
查看次数

HandleScope背后的设计理念是什么?

V8需要声明HandleScope才能清除在作用域内创建的任何Local句柄.我知道HandleScope将取消引用这些句柄进行垃圾收集,但我很感兴趣为什么每个Local类都不会像大多数内部ref_ptr类型的助手那样自行解除引用.

我的想法是,HandleScope可以通过一次性转储大量句柄而不是像在ref_ptr类型作用域类中那样逐个转储来更有效地完成它.

v8

17
推荐指数
2
解决办法
3085
查看次数