游戏服务器经典的架构就是C++和Lua的结合,C++开发主体框架。Lua实现一些复杂的逻辑。我们都知道Lua是一种很快的语言。可是究竟有多块。我们測试下看看。
C++调用Lua的性能測试。发现不正确的地方望提出。

实验一:我们使用C++调用Lua带8个以上參数的函数,而这个函数里面什么也没有做。我们通过这个实验能够简单地測试出:使用Lua虚拟机和向调用栈当中传入8+个參数和Lua取出这些參数的时间。

可是当中的參数类型比較多样。有整形。浮点型,和数组。实验的Lua函数比較简单,例如以下:

function test(x1,x2,x3,x4,x5,x6,x7,x8,x9)
end

实验结果:我们调用这个函数1000次所须要的时间在35ms左右,也就是说一次调用的时间在0.035ms左右

实验二:我们使用C++调用带有一个參数的Lua函数。通过和实验一的结果组成方程组能帮我们求出使用Lua虚拟机的时间和參数出入栈的时间。

当中Lua函数是很easy的例如以下:

function test(x1)
end

实验结果:我们调用这个函数1000次所须要的时间在16ms左右。也就是说一次调用的时间在0.016ms左右。

实验三:我们在实验二的函数中增加Lua调用C++的函数。这个函数在C++端也什么都不做,来測试Lua调用C++时入栈和出栈时候的时间。

函数简单例如以下:

function test(x1)
Chat(x1,x2,x3,x4,x5,x6,x7)
end

实验结果:我们发现其使用时间高于(实验二)15ms左右,预计。调用一次虚拟机的时间是14ms,參数的时间预计是1ms左右

实验四:我们在实验二的基础之上将其函数參数扩充到2个,我们观察其时间有没有小幅的变化。

函数例如以下:

function test(x1,x2)
end

实验结果:我们发现时间和实验二几乎相同,这也许能够反映出出入栈的时间是比較快的。申请比較大的栈内存也许会占用比較多的时间。

实验五:我们在实验二的基础上将函数的參数扩充到3个。我们发现其时间还是没有明显的变化。

函数例如以下:

function test(x1,x2。x3)
end

实验结果:能够反映出出入栈的时间是比較快的,申请比較大的栈内存也许会占用比較多的时间。

实验六:我将函数的參数扩展到7个,我们观察其时间是怎样变化的

函数例如以下:

function test(x1,x2,x3,x4,x5,x6,x7)
end

实验结果:发现去时间和实验五几乎相同。也许能够验证出入栈的时间是比較快的。申请比較大的栈内存也许会占用比較多的时间。

C++调用Lua的性能測试的更多相关文章

  1. JNI/NDK开发指南(九)——JNI调用性能測试及优化

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接 ...

  2. Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试

    百度定义:Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对很多其它.包含string(字符串).list(链表).set(集合).zset(sort ...

  3. 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式

    PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  4. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  5. Redis源代码分析(十三)--- redis-benchmark性能測试

    今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...

  6. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  7. mongodb3.0 性能測试报告 一

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  8. mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY'

    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql ...

  9. LR杂记 - 性能測试指标及经常使用的监控工具

    监控指标 性能測试通常须要监控的指标包含: 1.serverLinux(包含CPU.Memory.Load.I/O). 2.数据库:1.Mysql 2.Oracle(缓存命中.索引.单条SQL性能.数 ...

随机推荐

  1. pic减法进位问题

    1.pic指令中subwf是 F - Wreg,且如果F>=Wreg,则C=1:如果F<Wreg,则C=0:这是由于pic的减法是加上减数的补码实现的.例如3-2,其实是3+FE=01,进 ...

  2. Twilio介绍和使用

    1.Twilio是?需要如何才能通过Twilio打国际网络电话 http://uuxn.com/twilio-toll-free-sms介绍了通过网页来收取和发送信息 需求:通过TWILIO拨打国外座 ...

  3. windows连接投影仪后桌面画面和白板画面不一致

    windows连接投影仪后桌面画面和白板画面不一致: 一. windows 搜索: 投影仪 选择相应的效果:

  4. 使用3ds Max制作卡通狗教程

    使用软件::3ds Max 软件下载:http://www.xy3dsmax.com/xiazai.html 全教程完,学完记得交作业.如果本教程对您有所帮助,请推荐给你的朋友. 全教程完,学完记得交 ...

  5. How Javascript works (Javascript工作原理) (二) 引擎,运行时,如何在 V8 引擎中书写最优代码的 5 条小技巧

    个人总结: 一个Javascript引擎由一个标准解释程序,或者即时编译器来实现. 解释器(Interpreter): 解释一行,执行一行. 编译器(Compiler): 全部编译成机器码,统一执行. ...

  6. [agc016d]xor replace

    题意: 题解: 棒棒的神仙题...这题只是D题???(myh:看题五分钟,讨论两小时) 首先这个异或和是假的,比如我现在有$a=(a_1,a_2,a_3,a_4)$,操作一下$a_2$,就变成了$a= ...

  7. LightOJ-1138 Trailing Zeroes (III) 唯一分解定理 算n!的某个因数个数

    题目链接:https://cn.vjudge.net/problem/ 题意 找一个最小的正整数n 使得n!有a个零 思路 就是有几个因数10呗 考虑到10==2*5,也就是说找n!因数5有几个 数据 ...

  8. Vue2.0父子组件间事件派发机制

    从vue1.x过来的都知道,在vue2.0中,父子组件间事件通信的$dispatch和$broadcase被移除了.官方考虑是基于组件树结构的事件流方式实在是让人难以理解,并且在组件结构扩展的过程中会 ...

  9. 集团公司(嵌入ETL工具)財务报表系统解决方式

    集团公司(嵌入ETL工具)財务报表系统解决方式 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包含:金矿.铜矿.房产.化纤等.因为子公司在业务上的差异.子 ...

  10. Node.js使用cnpm

    npm是Node.js中维护第三方库.模块的工具,可是国外的速度非常悲剧,这里有一个中国的源cnpm. http://cnpmjs.org/ 须要在命令行中执行 npm install -g cnpm ...