首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考虑到Erlang在幕后引起了许多内存复制,它真的很快吗?

考虑到Erlang在幕后引起了许多内存复制,它真的很快吗?
EN

Stack Overflow用户
提问于 2013-03-26 14:00:11
回答 1查看 234关注 0票数 5

我是Erlang的新手,我了解Erlang语言采用了角色模型的设计,并创建了轻量级进程的概念,这是高并发编程的关键点。但是,它也采用了函数式编程范式,这种范式施加了引用透明性。这意味着变量在赋值后不能改变。所以,我看到了很多类似的函数,比如:

代码语言:javascript
复制
gb_trees:delete(Key, Tree1) -> Tree2

当我们从树中删除一个键时,我们实际上创建了一个全新的树。这是否意味着,我们在幕后克隆Tree1的所有剩余节点?

如果是这样的话,这种语言真的适合高性能服务器开发吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 15:36:12

在树的情况下,您只需要复制实际更改的节点。假设你有一棵树:

代码语言:javascript
复制
       A
      / \
     /   \
    B     C
         / \
        D   E

如果以B作为参数调用delete_tree方法,则需要复制的唯一节点是A,因为子树CDE仍然与操作前相同。

此外,如果您在操作后不使用Tree1,而只使用结果树,编译器可以更改操作以直接修改树,这可能会更快。

这些操作并不是非常昂贵,并且对于大多数数据结构来说,冗余复制开销非常小。对于某些事情(即加载为字节数组的大图像)您可能需要creative solutions

Erlang适用于服务器系统,不是因为它的速度,而是因为它的可靠性。对于大型系统来说,再增加十几台或上百台服务器并不是什么大问题,但如果你有一秒钟的停机时间,比如电话账单,那就是一件大事。在美国,这可能是数十万次没有计费的电话--这显然比购买更多服务器的成本更高。

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

https://stackoverflow.com/questions/15630345

复制
相关文章

相似问题

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