• 黑铁打野王
    2019-06-18
    nginx version: openresty/1.13.6.2
    1. lua-nginx-module
    resty -e "local start = ngx.now();
    for _ =1, 1000000000 do
        ngx.encode_base64('123456')
    end
    ngx.update_time();
    ngx.say(ngx.now() - start)"
    79.530000209808
    2. lua-resty-core
    resty -e "require 'resty.core';
    local start = ngx.now();
    for _ =1, 1000000000 do
        ngx.encode_base64('123456')
    end
    ngx.update_time();
    ngx.say(ngx.now() - start)"
    8.944000005722
    一个79.5s 一个8.9s
    展开

    作者回复: 差不多 10 倍的性能差异

     3
     7
  • 微风吹了个吹
    2019-06-17
    温老师, 1.15.8的opnresty默认是开启GC64的,是不是可以理解为这里ffi.C.malloc与ffi.new就没啥区别了?官方的更新日志```change: we now enable the GC64 mode by default in our bundled LuaJIT build for x86_64 architectures; this can be disabled using --without-luajit-gc64. Thanks Thibault Charbonnier for the patch```

    作者回复: 是的

     1
     4
  • 回家
    2019-06-15
    假设使用decode_base64函数,lua-resty-core不开启的时候,使用的函数就是lua-nginx-module中实现的,而开启的话就是使用lua-resty-core中实现的?

    作者回复: 是的

    
     1
  • helloworld
    2019-06-14
    老师,lua-resty-core和lua-nginx-module各自都有哪些API,怎么查呢

    作者回复: 要分别查看这两个仓库的文档了

    
     1
  • Geek_e553fa
    2019-06-14
    沙发。希望多点实例。还有讲讲全局变量申请使用的一些替代方案。不是否定了不给解决办法

    作者回复: 可以使用模块中的 top level 局部变量来替代,这个后面会提到。
    在 OpenResty 中所有变量都要加 local。

    
     1
  • 写点啥呢
    2019-08-29
    请问老师,ffi和cfunction的性能差异是不是主要是有LuaJIT的实时编译优化带来的?除此之外还有哪些因素导致了这两者之间的性能差异呢?

    作者回复: 主要是这个原因

     1
    
  • Leon📷
    2019-07-02
    跨语言调用的话,函数调用返回都是通过函数栈来传递嘛,比如go调用C,是不是有点主题无关哈,希望老师解答下
    
    
  • 旺旺
    2019-06-19
    我是1.15.8.1版本的,用了前面同学给的代码,跑起来,时间相差很少,一个38.133000135422秒,一个37.325000047684秒。这是为啥?

    作者回复: 因为从1.15.8.1版本开始,默认开了 lua-resty-core

     2
    
  • 英雄
    2019-06-15
    看不懂

    作者回复: 知道 lua-resty-core 是使用 FFI 实现的 API 就行了,细节看不懂没有关系。

    
    
  • 回家
    2019-06-15
    如何理解FFI的交互部分是用lua实现的,这部分代码可以被JIT跟踪到?
    LuaCFuncion:ngx_http_lua_ngx_decode_base64整个函数都不能被JIT追踪到,而函数ngx.decode_base64可以被JIT追踪到,只有里面的函数C.ngx_http_lua_ffi_decode_base不能被追踪到是吗?也就是C.ngx_http_lua_ffi_decode_base函数可以被JIT编译优化?

    作者回复: LuaJIT 是运行 Lua 代码的,自然只能 JIT 它其中的 Lua 代码,CFunction 的自然无能为力。

     1
    
  • 一步
    2019-06-14
    这个不太了解,openresty 工作中要的少,还没上手的,不知道怎么去比较性能
    
    
我们在线,来聊聊吧