您知道在Node.js中实现消耗较少内存的模型层的最佳方法吗?我认为有以下几种选择:
我对内存消耗表示怀疑,因为在第一种方法中,只有一个类的实例可以处理跨控制层和数据库的数据;而在第二种方法中,可能会出现同一类的许多实例(同时有100个用户注册),尽管一个好处可能是更全面的OOP。
谢谢。
发布于 2015-10-09 05:33:51
我不明白你的第一个提议。您正在将一个对象实例传递给module.exports。如果对象不需要多个实例,则不需要构造函数。您可能应该定义一些类似于
var UserModel = {
create: function(){},
read: function(){},
update: function(){},
delete: function(){},
list: function(){}
}
module.exports = UserModel;声明一个函数占用内存,尽管数量微不足道。但是更重要的是,在这个场景中有一个构造函数是没有意义的,而且如果我为您的代码做出贡献,我可能会为了理智而修改它。
至于第二个命题,使用带有构造函数的对象并使用new关键字为您创建的每个文档创建实例肯定更常见。但是,它可能会消耗更多的内存,因为您正在创建同一个对象的许多实例。例如,您接收JSON,将其解析为一个对象,然后将该对象传递给构造函数,从而从模型和文档构造一个具有继承方法和属性的实例。尽管如此,这是可以忽略不计的内存增加,因为JavaScript是通过引用传递的。
我不明白为什么在这种情况下您会关心内存的使用。在这种情况下,您不太可能做很多事情来大幅度减少内存消耗。最终,完全无视OOP而只创建过程代码可能是最具性能的,尽管这是非常难以管理的--它的内存占用可能最小。尽管这正是我的观点,但您可能应该写出最有意义的东西,而不是消耗最少内存的东西。为了减少内存占用而做的任何小改动,从长远来看都可能会产生反效果,因为对象实际上并不占用那么多内存。
100个用户每人传递30字节的用户名和密码,等于10 to (标题和JSON中的其他字符)。如果您正在使用内存较少的系统,那么您可能应该考虑使用一种可以显式管理内存并具有静态类型(C、C++、Java)的语言。更不用说nodejs的并发模型了,并不意味着100个请求同时传入,nodejs将同时处理这100个请求,其中一些请求可能会在其他请求开始处理之前响应并被垃圾收集。
https://stackoverflow.com/questions/33028964
复制相似问题