开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 1

简单电脑/LuaProfilerForUnity

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
LuaP.cpp 2.92 KB
一键复制 编辑 原始数据 按行查看 历史
liyonghelpme 提交于 2016年10月18日 23:46 +08:00 . Lua性能测试工具
//
// LuaP.cpp
// LuaP
//
// Created by liyong on 2016年10月18日.
// Copyright © 2016年 liyong. All rights reserved.
//
#include "LuaP.hpp"
#include <chrono>
#include "easylogging++.h"
using namespace std;
INITIALIZE_EASYLOGGINGPP
extern "C" {
static void callhook(lua_State *L, lua_Debug *ar) {
lua_Debug previous_ar;
lua_getstack(L, 1, &previous_ar);
lua_getinfo(L, "n", ar);
LuaP::getInstance().CallFunc(ar);
}
}
void LuaP::SetLogPath(string path) {
logPath = path;
el::Configurations defaultConf;
defaultConf.setToDefault();
defaultConf.set(el::Level::Info, el::ConfigurationType::Enabled, "true");
defaultConf.set(el::Level::Info, el::ConfigurationType::Format, "%datetime %msg");
defaultConf.set(el::Level::Info, el::ConfigurationType::ToFile, "true");
defaultConf.set(el::Level::Info, el::ConfigurationType::Filename, logPath);
el::Loggers::reconfigureLogger("default", defaultConf);
}
void LuaP::Start(lua_State *L){
lua_sethook(L, (lua_Hook)callhook, LUA_MASKCALL | LUA_MASKRET, 0);
}
void LuaP::CallFunc(lua_Debug *ar) {
if(ar->name == NULL) {
return;
}
auto ret = functionCalls.find(ar->name);
if(ret == functionCalls.end()){
if(ar->event == 1) {
return;
}
shared_ptr<FunctionCallInfo> fc(new FunctionCallInfo());
functionCalls[ar->name] = fc;
fc->numbers = 0;
fc->time = 0;
}
shared_ptr<FunctionCallInfo> fc1 = functionCalls[ar->name];
if(!ar->event) {
fc1->startTime = chrono::steady_clock::now();
}else {
auto diff = chrono::steady_clock::now()-fc1->startTime;
auto d = chrono::duration<double, nano> (diff).count();
fc1->time += d;
fc1->numbers++;
}
}
void LuaP::WriteLog() {
for(auto f : functionCalls){
auto fn = f.first;
auto fc = f.second;
LOG(INFO) << "FC:" << fn << ":" << fc->time << ":" << fc->numbers;
}
functionCalls.clear();
}
void LuaP::Stop() {
el::Loggers::flushAll();
}
extern "C" {
static int profiler_init(lua_State *L){
LuaP::getInstance().Start(L);
return 0;
}
static int profiler_stop(lua_State *L) {
LuaP::getInstance().Stop();
return 0;
}
static int profiler_setLogPath(lua_State *L) {
const char*path = lua_tostring(L, 1);
LuaP::getInstance().SetLogPath(path);
return 0;
}
static int profiler_writeLog(lua_State *L) {
LuaP::getInstance().WriteLog();
return 0;
}
static const luaL_Reg prof_funcs[] = {
{"start", profiler_init},
{"stop", profiler_stop},
{"setLogPath", profiler_setLogPath},
{"writeLog", profiler_writeLog},
{NULL, NULL},
};
int luaopen_luaProfiler(lua_State *L) {
luaL_openlib(L, "luaProfiler", prof_funcs, 0);
return 1;
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

Unity的lua性能分析工具,可以用来分析ulua,slua,tolua++等
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/SimpleAI/LuaProfilerForUnity.git
git@gitee.com:SimpleAI/LuaProfilerForUnity.git
SimpleAI
LuaProfilerForUnity
LuaProfilerForUnity
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /