首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >smalloc在io.js中的应用

smalloc在io.js中的应用
EN

Stack Overflow用户
提问于 2015-01-21 11:38:22
回答 2查看 588关注 0票数 6

io.js的第一个版本本月发布,我正在阅读文档时发现了司马洛克 --一个在io.js中引入的新模块。

直到今天,我还没有觉得有必要在JavaScript上这么做。

我的问题是:

  1. 我想知道是否真的需要使用smalloc在javscript中分配原始内存?
  2. 如果需要的话,为什么?
  3. 使用smalloc的用例是什么?
  4. 如果不是,那么为什么io.js成员要添加这个模块?

它还说

可以指定您想要的外部数组数据的类型。所有可能的选项都在smalloc.Types**.**中列出

示例用法:

代码语言:javascript
复制
var doubleArr = smalloc.alloc(3, smalloc.Types.Double);

下面是支持分配的类型列表

代码语言:javascript
复制
smalloc.Types#

Int8
Uint8
Int16
Uint16
Int32
Uint32
Float
Double
Uint8Clamped

  1. 我们是想让javascript成为强类型语言
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 12:32:28

首先,缓冲区是由smalloc模块支持的,这个模块不是由io.js开发人员添加的,它是在node 0.11分支中启动的,io.js刚刚导入它。原始内存分配意味着更低级别的内存操作,从而--更快的操作,更好的性能,这就是node.jsio.js的目标。因此,如果您需要在二进制世界中实现某些东西,而不局限于当前的缓冲区API,则应该使用smalloc来创建您自己的操作内存的方法。就像医生说的:

这可以用于创建您自己的类似缓冲区的类。没有设置其他属性,因此用户需要跟踪其他必要的信息(例如分配的长度)。

而且,这不是试图使javascript成为一种强类型语言,这只是内存操作,不能以其他方式确保更高的性能。

票数 8
EN

Stack Overflow用户

发布于 2015-02-20 21:02:45

谢谢米奇很好地回答了这个问题。我想提供一些关于我为什么实施smalloc的补充信息。

不要认为JS中的原始内存分配是一些奇怪的新事物。它是由类型化数组在引擎盖下使用的相同类型的机制。因此,只要您可以使用类型化数组,也可以使用smalloc。smalloc的优点是它没有为你定义任何东西。允许API的最大灵活性。它也是安全的,因为当对象不再被使用时,GC将清理您的分配。

一种用法是使用数学库。尤其是在编写本机模块时。我个人将其用于棘手的性能优化,即在对象上分配内存,然后在JS和C++之间共享该内存,以便在两者之间启用共享状态。到目前为止,这是最快的方法,并且在Node和io.js中已经导致了一些令人印象深刻的优化。

请记住,您可以将资源分配到现有对象上。这就是力量所在。例如:

代码语言:javascript
复制
function Alloc(n) {
  n >>>= 0;  // uint32 conversion
  this.length = n;
  smalloc.alloc(n, this);
}

var a = new Alloc(16);

有一个简单的新构造,它将一个Uint8外部数据数组分配到实例上。

我将很快重申你的问题的答案:

  1. 我想知道是否真的需要使用smalloc在javscript中分配原始内存?

是。考虑类型化数组。

  1. 如果需要的话,为什么?

上面回答了。此外,搜索使用类型化数组的任何内容。

  1. 使用smalloc的用例是什么?

上面回答了。此外,开发人员还发现了许多其他用途。

  1. 如果不是,那么为什么io.js成员要添加这个模块?

在io.js出现之前很久我就写过了。:)

  1. 我们是否试图使javascript成为一种强类型语言?

绝对不行。这两者甚至没有关系。

更新:由于V8 v4.4中出现的更改中断,从io.js v2开始,smalloc被标记为“废弃”。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28066317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档