标签: v8

转储整个数组:console.log和console.dir输出"... NUM more items]"

我正在尝试记录一个长数组,以便我可以在终端中快速复制它.但是,如果我尝试记录数组,它看起来像:

['item',
 'item',
  >>more items<<<
  ... 399 more items ]
Run Code Online (Sandbox Code Playgroud)

如何记录整个阵列,以便我可以快速复制?

arrays v8 dump node.js console.log

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

Node.js缓冲区的最大大小是多少

我读到一个文件太大而无法放入缓冲区时出现致命错误.

FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() length exceeds max acceptable value
Run Code Online (Sandbox Code Playgroud)

要么,

RangeError:在Function.Buffer.allocUnsafe(buffer.js:209:3)中,"size"参数不得大于2147483647

如果我尝试分配1GB缓冲区,我会得到同样的致命错误,

var oneGigInBytes = 1073741824;
var my1GBuffer = new Buffer(oneGigInBytes); //Crash   
Run Code Online (Sandbox Code Playgroud)

Node.js Buffer类实例的最大大小是多少?

v8 node.js

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

从.NET应用程序引用Google的V8引擎

我正在构建一个.NET 3.5应用程序,并且需要在服务器上评估JS代码 - 基本上是用户提供的规则集,可以在浏览器或服务器上运行.托管JS不是一个选项,因为JS代码将在运行时提供.Aptana的Jaxer也不是一个选择.所以我正在研究在我的应用程序中使用V8引擎的构建.

我成功地将源代码构建到DLL中,但该DLL不是托管库,也不是COM.V8只是普通的C++.

关于如何在C#中与这种类型的DLL互操作的任何想法?另外,我对SpiderMonkey或其他JS引擎的其他建议持开放态度.

提前致谢.

更新:

我能够使用Ryan的解决方案.我刚刚更新了对trunk的最新版本的引用.它运作得很好.谢谢瑞恩.

.net javascript interop v8 serverside-javascript

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

Eclipse中的node.js - 哪些插件是大多数人使用的?

我最感兴趣的是服务器端Web开发,虽然能够在Chrome中重新部署一些内容会很不错.

我目前正在Eclipse IndigoUbuntu上运行,主要开发Java/Scala程序并使用git.

到目前为止,我遇到过http://code.google.com/p/chromedevtools/https://www.ebayopensource.org/index.php/VJET/HomePage,但不确定哪个更好.

eclipse v8 eclipse-plugin node.js

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

常见的JavaScript实现是否使用字符串实习?

常见的JavaScript引擎(如V8和WebKit的JavaScriptCore)是否使用字符串实习来处理JavaScript字符串?或者他们实际上在内存中保留了多个相同字符串的实例?

javascript programming-languages webkit v8 string-interning

33
推荐指数
3
解决办法
5213
查看次数

如何读取nodejs内部探查器tick-processor输出

我对分析我的Node.js应用程序很感兴趣.我用--prof旗帜启动它,并获得了一个v8.log文件.我采用了windows-tick-processor并获得了一个人类可读的分析日志.在问题的底部是日志文件中的一些小摘录,我完全无法理解.

我得到了滴答统计方法.我不明白totalvs nonlib意味着什么.此外,我不明白为什么有些事情的前缀LazyCompile,Function,Stub或其他条款.

我希望得到的最佳答案是刻度处理器输出格式的完整文档/指南,完整地解释每个术语,结构等...

除此之外,我只是不明白lazy-compile是什么.是汇编吗?是不是每个函数都只编译一次?那么编译怎么可能是我的应用程序执行的重要部分?该应用程序运行了几个小时来生成此日志,我假设内部JavaScript编译需要几毫秒.这表明懒惰编译是每个函数不会发生一次,但在某种代码评估期间会发生?这是否意味着每当我有一个函数定义(例如嵌套函数)时,内部函数每次都会"懒惰编译"?

我在任何地方都找不到任何关于此的信息,我一直在谷歌搜索DAYS ......

我也意识到有很多探查器标志.其他参考资料也欢迎.

[JavaScript]:
   ticks  total  nonlib   name
  88414    7.9%   20.1%  LazyCompile: *getUniqueId C:\n\dev\SCNA\infra\lib\node-js\utils\general-utils.js:16
  22797    2.0%    5.2%  LazyCompile: *keys native v8natives.js:333
  14524    1.3%    3.3%  LazyCompile: Socket._flush C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:365
  12896    1.2%    2.9%  LazyCompile: BasicSerializeObject native json.js:244
  12346    1.1%    2.8%  LazyCompile: BasicJSONSerialize native json.js:274
   9327    0.8%    2.1%  LazyCompile: * C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:194
   7606    0.7%    1.7%  LazyCompile: *parse native json.js:55
   5937    0.5%    1.4%  LazyCompile: *split native string.js:554
   5138 …

profiler profiling v8 node.js

33
推荐指数
1
解决办法
5819
查看次数

为什么Function.prototype.bind变慢?

将此基准与chrome 16与opera 11.6 进行比较时,我们发现了这一点

  • 在chrome native中绑定几乎比模拟版本的bind慢5倍
  • 在opera native中绑定几乎是模拟绑定版本的4倍

在这种情况下,绑定的模拟版本是

var emulatebind = function (f, context) {
    return function () {
        f.apply(context, arguments);
    };
};
Run Code Online (Sandbox Code Playgroud)

有没有充分的理由说明为什么存在这样的差异,或者仅仅是v8没有足够优化的问题?

注意:emulatebind这只实现了一个子集,但实际上并不相关.如果您拥有功能齐全且经过优化的模拟绑定,则基准测试中性能差异仍然存在.

javascript google-chrome v8

32
推荐指数
2
解决办法
4788
查看次数

在Google Chrome中,array.splice()的时间复杂度是多少?

如果我使用splice()从数组中删除一个元素,如下所示:

arr.splice(i, 1);
Run Code Online (Sandbox Code Playgroud)

这是O(n)不是最糟糕的情况,因为它会在我之后移动所有元素?或者它是不变的时间,下面有一些链表魔术吗?

javascript big-o google-chrome v8 time-complexity

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

V8和ECMAScript的区别

我在哪里可以找到V8和ECMAScript之间所有差异的列表?例如V8支持const,它不是ECMAScript标准的一部分.

javascript v8

31
推荐指数
1
解决办法
2909
查看次数

从v8 :: Arguments转换为C++类型

我正在玩用C++创建Node.js模块,但我对v8 :: Arguments类感到困惑.假设我有一个用于发送电子邮件的Javascript类,它有一个带有此签名的方法:

Mailer::sendEmail(Array recipients, String sender, String message);
Run Code Online (Sandbox Code Playgroud)

这会被称为:

mailer.sendEmail(["joe@gmail.com", "sally@gmail.com"], "fred@gmail.com", "Hi there");
Run Code Online (Sandbox Code Playgroud)

现在在C++的土地上,我有一个带有这个签名的类函数:

SendEmail(const v8::Arguments& args)
Run Code Online (Sandbox Code Playgroud)

这是在Javascript土地上支持我的Mailer :: sendEmail方法.SendEmail函数将创建我的Emailer类的新实例,该实例本身具有带此签名的类函数:

send(std::list<std::string> recipients, std::string from, std::string message)
Run Code Online (Sandbox Code Playgroud)

这就是我迷失的地方.我不知道如何从args中获取值,并将它们转换为常规C++类型,因此我可以将值传递给send函数.据我了解,传递给Mailer :: sendEmail的3个值将在args [0],args [1]args [2]中提供.我甚至知道我可以做一些类型检查一样if (!args[0]->IsArray()),但实际上转换ARGS [0]std::list<std::string>是什么,我不知道该怎么办.

编辑:我发现了一种做法的hackish方式,但我仍然认为V8有一些内置方法可以更清晰地处理这个问题.

static Handle<Value> SendEmail(const Arguments& args)
{
    HandleScope scope;

    list<string> values;
    Local<Object> obj = args[0]->ToObject();
    Local<Array> props = obj->GetPropertyNames();

    // Iterate through args[0], adding each element to …
Run Code Online (Sandbox Code Playgroud)

c++ v8 node.js

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