C LuaJit 分析

Posted

技术标签:

【中文标题】C LuaJit 分析【英文标题】:C LuaJit Profiling 【发布时间】:2017-12-04 10:07:29 【问题描述】:

我有以下执行堆栈:

    C++

    C Lua API

    LuaJIT

    C 函数 - 我自己的函数,通过从 lua 脚本调用的 C-Lua-API 注入到 Lua

我想分析这段代码。我想知道在 luajit 阶段花费的时间百分比。

我发现这里有问题。如果我将使用诸如 -pg -fprofile-generate -fprofile-use 之类的标志编译 luajit,它将与为生产构建编译的 luajit 不同。

有什么方法可以弄清楚 LUAJit 阶段发生了什么?

这个执行堆栈的好例子 - openresty

【问题讨论】:

代码在哪里? 例如,你可以看到 open-resty 源代码。 【参考方案1】:

最好使用perf 实用程序和flamegraph。 并且没有理由使用 gcc 标志(如 -fomit-frame-pointer-fprofile-generate-fprofile-use)重新编译。

perf 不需要此标志来收集信息。只有-pg 标志。

【讨论】:

以上是关于C LuaJit 分析的主要内容,如果未能解决你的问题,请参考以下文章

lua和go混合调用调试记录支持跨平台(通过C和LuaJit进行实现)

luajit VS C,运行性能超过C?

LuaJIT 未定义的引用

luajit 开启FFI + jit之后彪悍的性能

C/C++项目的编译, Makefile和CMake

LuaJIT 是如何工作的 - 解释模式