![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Erlang
DY老王
这个作者很懒,什么都没留下…
展开
-
Erlang -- Efficiency Guide构造和匹配二进制
4 构造和匹配二进制二进制可以像如下例子一样高效地构造:建议my_list_to_binary(List) -> my_list_to_binary(List, <<>>).my_list_to_binary([H|T], Acc) -> my_list_to_binary(T, <<Acc/binary,H>>);my_list_to_binary([], Acc) -> Acc.二进制也可以像如下例原创 2020-11-05 16:43:25 · 184 阅读 · 0 评论 -
Erlang -- Efficiency Guide 常见的警告
3 常见的错误本节罗列出几个需要注意的模块和NIF,不仅仅是从性能的角度。3.1 定时器模块使用 erlang:send_after/3 和 erlang:start_timer/3 接口创建定时器比使用 STDLIB 里的 timer 模块提供的timer接口创建定时器更加高效。timer模块使用一个单独的进程管理定时器。如果许多进程频繁地创建和取消计时器(特别是在使用SMP仿真器时),则该定时器管理进程很容易过载。在 timer 模块有一些函数(例如 timer:tc/3 和 timer:sle原创 2020-11-04 23:36:32 · 130 阅读 · 0 评论 -
Erlang -- Efficiency Guide Erlang 性能的七个误区
2 Erlang 性能的七个误区有一些真理存活的时间太长了,远远超出了其最佳的存在时期。这或许是因为人与人之间"信息"的传递速度比一篇单一的声明(例如:非尾递归变得更快了。)发布速度要快。本文尝试消除这些已经成为神话的旧真理(或者半真理)。2.1 误区:尾递归比非尾递归快的多根据"真理",使用尾递归构造一个逆序的列表然后再调用 lists:reverse/1 函数比直接使用非尾递归构建一个正序的列表要快。原因是非尾递归比尾递归消耗更多的内存。在R12B版本之前,这在某种程度上来说是正确的。在R7B原创 2020-11-04 19:16:09 · 205 阅读 · 0 评论 -
Erlang -- Efficiency Guide 简介(译文)
1 简介1.1 目的“过早的优化是万恶之源” (D.E.Knuth)第一,高效的代码是结构清晰和整洁的,它基于良好的整体架构和优良的算法。第二,高效的代码可以绕过文档化的接口,并利用当前已实现的且不具有明显缺陷的代码来高度实现。理想情况下,你的代码只包含上述的第一种类型的代码。如果这样做程序的运行速度还是太慢,你可以对程序进行概要分析,找出性能的瓶颈所在的代码位置,并只对瓶颈代码进行优化,让其他代码尽可能保持整洁。本指南不能教你如何写高效的代码,且不包括适用于任何语言的通用优化技巧,比如将公共的原创 2020-11-04 17:25:22 · 111 阅读 · 0 评论 -
erlang节点通讯
参照Erlang程序设计(第2版)174页第2阶段:客户端在一个节点,服务器在相同主机的另一个节点服务器代码kvs.erl-module(kvs).-export([start/0, store/2, lookup/1]).start() -> register(kvs, spawn(fun() -> loop() end)).store(Key, Value) -> rpc({store, Key, Value}).lookup(Key) -&原创 2020-06-20 11:32:24 · 385 阅读 · 0 评论 -
Erlang源码阅读方法和file:consult函数源码级解析
一、查找erlang源代码方法:code:which(module)例子:code:which(file)运行结果:1> code:which(file)."d:/erl9.3/lib/kernel-5.4.3/ebin/file.beam"二、file:consult/1 函数源码阅读:%%%-----------------------------------------------------------------%%% The following functions,原创 2020-05-18 11:09:14 · 679 阅读 · 0 评论 -
[Erlang] count_characters更正
在 《Erlang 程序设计》书中第五章第63页,函数count_characters/1 编译出现错误。课本源码:-module(count_chars).-export([count_characters/1]).count_characters(Str) -> count_characters(Str, #{}).count_characters([H|T]...原创 2020-05-06 11:52:16 · 342 阅读 · 0 评论 -
[Erlang 习题] 4.11
ErLang程序设计第2版, 4.11 练习题答案(2) 内置函数 tuple_to_list(T) 能将元组 T 里的元素转换成一个列表。请编写一个名为 my_tuple_to_list(T) 的函数来做同样的事情,但不要使用相同功能的内置函数。内置函数 tuple_to_list(T) 示例:erlang:tuple_to_list/1把一个元组转为一个列表用法:tuple_to...原创 2020-05-03 11:37:43 · 287 阅读 · 0 评论