`
chaoslawful
  • 浏览: 198434 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Erlang Port性能评测

阅读更多

目的

评测调用外部程序的Erlang Port效率和内链的Erlang Port Driver效率。

 

方法

使用相同的C函数库,接口方面使用Port和Port Driver两种形式,分别组织对应的Erlang端封装程序。循环调用C库中最简单的*2函数10w次,测量总花费时间。

 

评测结果

Erlang Port程序总耗时5500ms,Erlang Port Driver程序总耗时356ms,因此在调用相同功能的外部库时Port形式的开销是Port Driver形式的1545%。

 

评测程序

公用C函数库

见附件中的 libx.c.zip。

 

Erlang Port形式C封装程序

见附件中的 example1.c.zip。

 

Erlang Port形式Erlang端程序

见附件中的 example1.erl.zip。

 

Erlang Port Driver形式C封装程序

见附件中的 example1_lid.c.zip。

Erlang Port Driver形式Erlang端程序

见附件中的 example1_lid.erl.zip。

 

分享到:
评论
3 楼 sscchh_2000 2010-07-27  
port driver的效率应该没有NIF的效率高吧?
2 楼 mryufeng 2009-09-13  
在我的机器上pipe的消息来回是100us
1 楼 mryufeng 2009-04-20  
driver方式的效率是最高的 除了消息的编解码没有其他开销。 外部port的方式则涉及到pipe的读写 句柄的调度 流程也复杂很多 速度肯定慢。但是好处是系统隔离 外部程序崩溃不会出问题。

http://blog.yufeng.info

相关推荐

    erlang port driver test

    标签 "erlang post driver test" 强调了测试的焦点是关于 Erlang 的 Port Driver,可能包括性能测试、兼容性测试和功能测试。 至于压缩包中的 "driver" 文件,这可能是测试项目中的核心部分,即实际实现了 Port ...

    erlang深度分析.pdf

    BEAM是Erlang的字节码解释器,模拟器可以用于开发阶段模拟运行和测试Erlang代码,有助于调试程序和优化性能。 #### 7. 内存管理 Erlang的内存管理是非常高效的,它使用了一种特殊的垃圾回收机制来确保低延迟。了解...

    erlang 深度分析

    - **Percept并发性能调测模块**: 提供了更精细的并发性能测试能力。 - **新语法**: 引入了新的函数调用语法,支持代码的热替换。 - **文档改进**: R12B版本中对文档进行了大幅度的完善和细化。 #### 19. Erlang...

    Inside Erlang VM

    同时,Erlang的JIT编译器Hipe可以生成原生代码,提高执行效率,使其在语言速度评测中表现出色。 系统调度策略包括处理超时的定时器、子进程退出、PORT的IO事件等。当没有活跃进程时,系统调度器会阻塞在底层的IO...

    emqtt-bench:Erlang MQTT v5.0基准测试工具

    Erlang MQTT基准测试工具 emqtt_bench是用Erlang编写的简单MQTT v5.0基准测试工具。 需要构建Erlang / OTP R21.2 +。 先建 make 连接基准 $ ./emqtt_bench conn --help Usage: emqtt_bench conn [--help < help> ] ...

    tcp_client:一个Erlang TCP客户端连接管理器

    - Erlang的进程模型使得每个TCP连接可以作为一个独立的进程运行,这样可以实现并发处理多个连接,提高系统性能。 - 进程间通过消息传递进行通信,保证了系统的并行性和容错性。 3. **tcp_client设计原则**: - ...

    lloyd-yajl-1.0.9-0-g9c15d72

    然而,需要注意的是,由于JSON库的选择对应用性能有直接影响,因此在选择使用lloyd-yajl之前,开发者应该对其进行性能测试,以确保它能满足项目的需求。 总结来说,lloyd-yajl-1.0.9-0-g9c15d72是Erlang环境中处理...

    julia_port:示例项目,用于调用elixir中的julia函数以使用port和metaprogramming进行科学计算

    由于提供的信息仅包含 "julia_port-master",这通常代表了项目的主分支或者仓库的克隆,通常会包含项目的源代码、文档、测试文件等。要详细了解这个项目,我们需要查看实际的源代码文件,包括 Elixir 如何设置和使用...

    Tsung负载测试tigase

    ### Tsung负载测试Tigase知识点详解 #### Tsung概述 Tsung是一款高效的压力测试...通过合理配置Tsung XML文件,可以针对不同的应用场景进行精准的性能评估,特别是在测试像Tigase这样的高性能XMPP服务器时尤其有用。

    eopcua:用于Erlang的OPC UA端口

    3. **Erlang 与 C 交互**:了解如何在Erlang中使用NIF(Native Implemented Functions)或Port来调用C代码,以提高性能或访问非Erlang原生的API。 4. **rebar3**:掌握rebar3的使用,包括安装、配置、编译、测试、...

    tsung安装使用说明

    Tsung 是一款基于 Erlang 开发的高性能压力测试工具,主要用于评估系统的并发处理能力。它支持多种协议,包括 HTTP、WebDAV、Jabber/XMPP、PostgreSQL、LDAP 和 MySQL,并且具备强大的分布式负载生成能力。Tsung 的...

Global site tag (gtag.js) - Google Analytics