- Erlang 教程
- Erlang - 首页
- Erlang - 概述
- Erlang - 环境
- Erlang - 基本语法
- Erlang - Shell
- Erlang - 数据类型
- Erlang - 变量
- Erlang - 运算符
- Erlang - 循环
- Erlang - 决策制定
- Erlang - 函数
- Erlang - 模块
- Erlang - 递归
- Erlang - 数字
- Erlang - 字符串
- Erlang - 列表
- Erlang - 文件 I/O
- Erlang - 原子
- Erlang - 映射
- Erlang - 元组
- Erlang - 记录
- Erlang - 异常
- Erlang - 宏
- Erlang - 头文件
- Erlang - 预处理器
- Erlang - 模式匹配
- Erlang - 守护进程
- Erlang - BIFS
- Erlang - 二进制
- Erlang - 函数
- Erlang - 进程
- Erlang - 邮件
- Erlang - 数据库
- Erlang - 端口
- Erlang - 分布式编程
- Erlang - OTP
- Erlang - 并发
- Erlang - 性能
- Erlang - 驱动程序
- Erlang - Web 编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用资源
- Erlang - 讨论
Erlang - 性能
在谈论性能时,需要注意以下关于 Erlang 的几点。
函数非常快 - 函数在 R6B 中获得了自己的数据类型,并在 R7B 中得到了进一步优化。
使用 ++ 运算符 - 此运算符需要以正确的方式使用。以下示例是使用 ++ 运算符的错误方式。
示例
-module(helloworld). -export([start/0]). start()-> fun_reverse([H|T]) -> fun_reverse(T)++[H]; fun_reverse([]) -> [].
由于 ++ 运算符复制其左操作数,因此结果被重复复制,导致二次复杂度。
使用字符串 - 如果处理不当,字符串处理可能会很慢。在 Erlang 中,您需要更多地考虑字符串的使用方式并选择合适的表示形式。如果您使用正则表达式,请使用 STDLIB 中的 re 模块,而不是已弃用的 regexp 模块。
BEAM 是一个基于栈的字节码虚拟机 - BEAM 是一个基于寄存器的虚拟机。它有 1024 个虚拟寄存器,用于保存临时值以及在调用函数时传递参数。需要在函数调用中保留的变量会保存到栈中。BEAM 是一个线程代码解释器。每个指令都是一个指向可执行 C 代码的字,这使得指令分派非常快。
广告