用c实现了一个函数,里面有socket函数相关调用,请求服务器然后等待服回复处理,然后在Lua脚本中调用这个函数,同脚本里直接用Lua socket 函数实现有何区别?
"Yichun Zhang (agentzh)" <age...@gmail.com>编写:
>Hello!
>
>2014-02-14 23:24 GMT-08:00 nzzlds:
>> 要追求极致性能肯定是写C模块了。无论怎么JIT,动态跟静态,GC跟手动,差别还是很大的,进出VM边界也存在相对较高的开销。
>
>这里的差别一般在微秒级(注意,不是毫秒!) :)
>
>由于我同时开发过纯 C 的 nginx module 和基于 ngx_lua
>的应用。真实应用场景下的整体差别经常是可以忽略不计的(当然,对于 MySQL 这样的复杂协议,差别会略大一些,但我仍在不断缩小这里的差别)。
>
>> 但是!这种应用场景Lua写就行了,JSON的编码解码由cjosn代劳,IO由nginx代劳,真正由Lua管的其实不多。而且以我经验,就算访问量很大,也是数据库端先垮,否则如果瓶颈在Lua,PHP,Ruby等等没法混了。。。
>>
>
>这里其实取决于你的数据库后端的吞吐能力。比如我在淘宝量子统计的时候,后端是规模很大的 MySQL 集群,所以两三台前端机如果使用
>PHP/Ruby 啥的,肯定是前端先完蛋。类似地,如果后端 MySQL
>集群中有一台机器超时严重,那也会影响所有的用户,因为前端的吞吐能力是瓶颈。
>
>另外,即使是小规模型的数据库集群,当查询缓存的命中率极高时,前端也很容易成为性能瓶颈 :)
>
>Regards,
>-agentzh
>
>--
>