- 浏览: 35059 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
文章分类
最新评论
-
derlang:
mryufeng 写道方向很好哦多谢鼓励,共同进步
Erlang学习告一段落 -
mryufeng:
方向很好哦
Erlang学习告一段落 -
crackcell:
一起进步……
Erlang学习告一段落
需要测试Erlang系统各个方面的性能。
问题:
因为变量的单次赋值原则,上述代码中不能对Q进行in-place修改。Q,Q1,Q2实现的效率如何?每次插入一元素,都要copy一份全新的数据结构出来吗?
所有的数据结构都面临这个问题。不过,ets可以通过id or name进行更新。
类似的还有函数参数的传值方式,对大的结构效率如何?
在if clause中,L1=L为何必要?在分支的时候为了保证变量的安全性,在引入新的变量的时候,所有的分支都要正确的处理,在后面才能对新变量进行操作。关键是,L1=L的效率,是整个list的copy吗?还有,这种处理手法,毕竟有点别扭。
record的用法:用模式匹配提取字段比较好用。H#node_info.name这种用法别扭,代码过长。编译器知道H的实际类型,为何还要我们指明?换成H.name就方便的多了。或者H@name,哈哈都行呀。
- 进程创建和并发能力
- 大数据量的消息传输
queue_test() -> Q = queue:new(), Q1 = queue:in(1), Q2 = queue:in(2), ok. -record(node_info, { var = 0, name, selected = 0, disks = [] }). disk_test() -> L = [ #node_info{name="node1", disks=[1,2,3,4]}, #node_info{name="node2", disks=[1,2]}, #node_info{name="node3", disks=[1,2]} ], disk_get(L, 0). move_head_to_tail([H|T]) -> T ++ [H]; move_head_to_tail([]) -> []. disk_total(L) -> lists:sum([length(D) || #node_info{disks=D} <- L]). disk_max([]) -> undifined; disk_max(L) -> [H|_] = lists:keysort(2, L), H. disk_get(L, Total) -> io:format("------------------------------------------~n"), receive after 1000 -> R = disk_get_n(L, Total, 2, []), io:format("Selected ~p~n", [element(1, R)]), disk_get(element(2, R), element(3, R)) end. disk_get_n(L, Total, 0, Acc) -> {Acc, L, Total}; disk_get_n(L, Total, N, Acc) -> Disks = disk_total(L), if Total =/= 0 -> L1 = [X#node_info{var=S/Total - length(D)/Disks} || #node_info{selected=S, disks=D} = X <- L]; true -> L1 = L end, #node_info{name=Name, selected=S, disks=D} = H = disk_max(L1), L2 = lists:keyreplace(Name, 3, L1, H#node_info{selected=S+1, disks=move_head_to_tail(D)}), disk_get_n(L2, Total+1, N-1, Acc ++ [H]).
问题:
因为变量的单次赋值原则,上述代码中不能对Q进行in-place修改。Q,Q1,Q2实现的效率如何?每次插入一元素,都要copy一份全新的数据结构出来吗?
所有的数据结构都面临这个问题。不过,ets可以通过id or name进行更新。
类似的还有函数参数的传值方式,对大的结构效率如何?
在if clause中,L1=L为何必要?在分支的时候为了保证变量的安全性,在引入新的变量的时候,所有的分支都要正确的处理,在后面才能对新变量进行操作。关键是,L1=L的效率,是整个list的copy吗?还有,这种处理手法,毕竟有点别扭。
record的用法:用模式匹配提取字段比较好用。H#node_info.name这种用法别扭,代码过长。编译器知道H的实际类型,为何还要我们指明?换成H.name就方便的多了。或者H@name,哈哈都行呀。
发表评论
-
Erlang应用列表
2010-11-02 17:47 766本文收集Erlang的应用列表,随时更新维护 WebS ... -
安装wx成功
2010-11-01 23:10 839今晚下定决心,要安装wx for Erlang,经过几个小时的 ... -
几个有趣的Erlang项目
2010-07-15 18:45 872Riak Scalaris CouchDB Disco ... -
mnesia schema management
2010-06-19 16:59 852Q: 加入一个新节点到Mnesia System &g ... -
日日亲近之
2010-06-03 19:19 29净空法师有一读书法:一门深入,长时熏修。细细想来,确有至理存在 ... -
学习erlang三个月小节
2010-06-01 21:44 825期间主要做了 - 看erlang programmin ... -
actors style of concurrent programming
2010-05-01 19:46 461from <<Programming in sca ... -
对Erlang的学习需要深入
2010-04-30 17:56 57用Erlang写了一个集群管理和监控系统,初具 ... -
Erlang标准库代码
2010-04-21 22:35 750欲掌握OTP,可以多读读Erlang标准库代码,rpc, os ... -
Erlang集群管理系统中遇到的一些小问题
2010-03-10 17:31 1463erlang节点之间的文件传输 # file:read_fil ... -
Erlang学习告一段落
2010-02-28 17:13 1157学习了一个多月的Erlang,很开阔眼界。最近在公司里建议用E ... -
gen_server: handle_cast VS handle_info
2010-02-20 15:17 2539http://www.trapexit.org/forum/v ... -
开源项目egfs
2010-02-19 22:21 930在http://projects.trapexit.org/w ... -
为EFS提供C API
2010-02-17 18:32 927问题: EFS是我最近学习Erlang的过程中写的一个min ... -
Erlang interoperability
2010-02-17 16:33 702在HTML文档的 doc/tutorial下有文件(新添Mak ... -
mini code and tools
2010-02-17 12:09 577on startup: ./.erlang $HOME/.e ... -
Erlang中的各类文件
2010-02-15 10:45 746[按] 还是多看看这个http://erlangdisplay ... -
Erlang bytecode
2010-02-10 18:26 809http://mryufeng.iteye.com yufe ... -
Erlang的代码加载过程
2010-02-08 23:05 604code:load_file/1 提个问题在这儿,慢 ... -
Erlang中的进程表示
2010-02-08 22:56 829test1() -> Pid = spaw ...
相关推荐
**伯克:Erlang基准测试库** 伯克(Berk)是一个专为Erlang编程语言设计的基准测试库。Erlang是一种强大的并行计算和分布式系统开发语言,以其在高可用性、容错性和实时性方面的优势而闻名。伯克库的出现,旨在帮助...
eMQTT-Bench是针对MQTT v5.0版本的一个基准测试工具,由Erlang编程语言编写。Erlang是一种并发性极强、适合构建分布式系统的语言,因其在实时系统和容错性方面的优势而常被用于构建高可用性的网络服务,比如消息...
- 谈论如何评估NIF的性能,并可能涉及一些基准测试。 - 提供了一些调试NIF的技巧,比如使用`erl_nif_trace`和日志记录。 通过学习Rustler编写Erlang NIF,开发者可以充分利用Rust的安全性和高性能,同时保持...
- **基准测试**:研究者们通过对一系列典型的Erlang程序进行基准测试,比较了Turbo Erlang与原生Erlang、以及其他编译为目标平台的C代码之间的性能差异。 - **结果分析**:初步的结果表明,Turbo Erlang的性能与高度...
Erlang MQTT基准测试工具 emqtt_bench是用Erlang编写的简单MQTT v5.0基准测试工具。 需要构建Erlang / OTP R21.2 +。 先建 make 连接基准 $ ./emqtt_bench conn --help Usage: emqtt_bench conn [--help < help> ] ...
httpcbench Erlang HTTP 客户端基准测试当前测试尝试创建 1000 个到本地服务器的并发 https 连接,该连接在 10 毫秒后响应。结果结果显示了 100 次迭代(100,000 个连接)的结果。 客户运行挂钟内存失败hackney...
- **性能测试**:通过对Erlang程序进行基准测试,可以直观地看到多核环境下程序的执行效率。这些测试结果可以帮助开发者了解Erlang在不同场景下的性能表现,从而更好地优化代码。 #### 四、多核编程中的测试与调试...
Erlang 的基准实用函数集合。 例子 % % collect system statistics > bench_util : stat (). [{ context_switch_count , 438816 }, { gc_count , 169988 }, { gc_bytes , 6050455640 }, { input_bytes , ...
Horse the Perfs是微基准测试的基础架构。 它为新的微基准测试提供了测试运行程序,计时和日志记录,因此它们可以高效地编写并以可重复的方式运行。 最后,它是一组微型基准测试,可以针对新的硬件和VM目标重新运行...
在实际使用中,我们还需要结合代码审查、单元测试以及性能基准测试等方法,确保优化措施的有效性。 总之,eprof是Erlang开发者必备的性能分析工具,它能够帮助我们找出代码中的性能问题,提升Erlang应用的运行效率...
erljson_bench 用于比较各种JSON编码/解码库的脚本图书馆比较ejson 瞬间json jsonx jsx mochijson2要求要执行这些基准测试,路径上必须有一个有效的erlang(erl和escript)。建立和运行要下载依赖项并进行编译: ...
vmq_bench-简单的MQTT基准 安装 ./rebar get-deps ./rebar compile 运行基准 erl -pa ebin -pa deps/*/ebin -s vmq_bench -scenario sample.scenario 编写方案文件 去做! 生成图 确保您已安装R ./plot.r 这将产生...
基准为了运行这个基准测试,你需要在你的机器上安装 Erlang、Java 和 Gnu Make。 将此 repo 克隆到您的机器中将 {message_count} 和 {message_size} 替换为您的 benchmakr 参数和在其根目录执行make MC={message_...
这些基准测试的结果提供了对不同数据结构在Erlang ETS中的表现进行深入分析的基础。 #### 数据结构简介 1. **AVL平衡二叉树**:是一种自平衡的二叉查找树,能够在添加或删除操作后自动保持平衡状态,从而确保查找...
$ make ui如果您移动 bencherl 文件夹,则必须再次构建 Web 界面: $ make clean-ui$ make ui如何运行基准测试套件在conf/run.conf指定要运行的内容和方式,然后使用bencherl运行基准测试套件。 $ ./bencherl如何为...
伯爵eartc是近似重播-跟踪编译器的简单Erlang端口/ cmdline接口,该工具用于I / O基准测试和重播strace日志。 导出的函数是init_listing / 1(用于geninit阶段),trace / 1(用于运行strace-artc),compile / 1...
通过对Erlang虚拟机和各种数据结构的基准测试,我们可以优化代码,提高系统效率,尤其是在处理大规模并发任务时。掌握`erlbench` 的使用和结果分析,对于提升Erlang应用程序的性能和稳定性具有重要意义。
总结来说,这个项目致力于通过持续交付机制,提供Erlang OTP的最新文档、基准测试结果和测试报告,以支持开发者进行高效、可靠的软件开发。这不仅有助于提高开发效率,还能确保代码质量,降低维护成本,从而增强整个...
Redo是用Erlang编写的流水线Redis客户端。 它缺乏任何形式的语法糖。 唯一的API函数是redo:cmd,它接受原始的redis命令。 建造 $ make 测试 单元测试 $ ./rebar eunit suite=redo 本地阅读基准 $ erl -pa ebin 1> ...
它最初是为了对Riak进行基准测试而开发的,它公开了可插拔的驱动程序接口,并已扩展为在各种项目中用作基准测试工具。 Basho Bench专注于两个绩效指标: 吞吐量:在一个时间范围内执行的操作数,跨所有操作类型...