1.Lua性能优化(三):ELuaProfiler开源
2.Neovim:插件入门
3.LuaJIT源码分析(一)搭建调试环境
4.mpv播放器常用脚本
5.Lua性能优化(四):ELuaProfiler使用手册
Lua性能优化(三):ELuaProfiler开源
欢迎关注,我之前的文章中提到的Lua性能优化系列中,自己实现的LuaProfiler终于开源了!
之前由于工作原因,代码归属问题,让这款Profiler未能与大家分享。主页源码但如今,为了在UE4项目中进行Lua性能分析的需要,我花费时间开发出了一款新的工具——ELuaProfiler,并已将其开源在Github上。
ELuaProfiler,顾名思义,是一个易于使用的Lua性能剖析器。目前,它专注于UnLua-ue4的老版本,因为我们的项目采用了这个版本。ELuaProfiler的核心功能是ELuaMonitor,它支持三种剖析模式:Total(整体性能)、PerFrame(帧级性能)和Statistics(统计数据)模式,与Unity自带的Profiler功能相似。
此外,rtb系统源码ELuaMonitor允许用户动态调整Profile的深度,以满足不同深度的性能分析需求。它还兼容Windows和Mac平台,因为它是基于UE4原生编辑器构建的,且已修复了导致iOS构建问题的bug。
未来,我计划继续改进和扩展ELuaProfiler的功能,以更好地服务于Lua性能分析社区。如果你对Lua性能优化感兴趣,或者需要一个实用的Profiler工具,ELuaProfiler是一个不错的选择,现在就去Github上获取它的源码吧!
Neovim:插件入门
定制 Neovim 的入门指南 如果你正在寻找定制 Neovim 的方法,本文将向你展示一些 Neovim 社区常使用且经过实践验证的插件。请确保你熟悉 Lua 语言的基础知识,因为所有的插件配置都是基于 Lua 的。如果你对 Lua 不甚了解,至少应该知道它的基本语法,以便理解插件配置。 首先,网络授课源码确保你已经安装了最新稳定的 Neovim 版本,可以通过访问 GitHub 发布页面来获取最新版。本指南假设你正在使用的是 Neovim v0.7。 接下来,了解如何手动安装插件。只需将插件下载至特定文件夹,Neovim 会自动处理后续安装过程。使用命令列出可用目录,以便于找到插件安装位置。 在目录中创建名为 'pack' 的文件夹,并在其中创建一个名为 'your_pack' 的子文件夹。这将用于存放你的插件。确保目录结构正确,以便 Neovim 能够加载插件。 现在,你已经准备好安装 Neovim 的插件了。下面是一些推荐的插件及其 GitHub 地址,以帮助你定制 Neovim 环境: tokyonight.nvim Github: folke/tokyonight.nvim更改默认主题,通过执行命令 `colorscheme tokyonight` 实现。
onedark.vim Github: joshdick/onedark.vim这是资料清空源码 Atom 的默认主题。
darkplus.nvim Github: lunarvim/darkplus.nvim这是 VSCode 的默认主题。
monokai.nvim Github: tanvirtin/monokai.nvim这是 Sublime Text 的默认主题。
nvim-web-devicons Github: kyazdani/nvim-web-devicons提供图标集合,通常由其他插件使用来显示图标。
lualine.nvim Github: nvim-lualine/lualine.nvim提供美观的状态栏,通过命令 `colorscheme tokyonight` 设置主题。
bufferline.nvim Github: akinsho/bufferline.nvim为每个打开的文件提供选项卡视图,类似于其他编辑器的标签页功能。
indent-blankline.nvim Github: lukas-reineke/indent-blankline.nvim在当前文件中添加缩进指南。
nvim-treesitter Github: nvim-treesitter/nvim-treesitter添加抽象语法树功能,增强代码阅读体验。
nvim-treesitter-textobjects Github: nvim-treesitter/nvim-treesitter-textobjects基于 treesitter 查询提供文本对象支持。
Comment.nvim Github: numToStr/Comment.nvim提供代码注释功能,使用 `gcc` 进行操作。
vim-surround Github: tpope/vim-surround提供周围模式操作,如添加、删除和更改环境。
nvim-tree Github: kyazdani/nvim-tree.lua以树形视图显示所有文件,提供常用文件管理功能。
Telescope Github: nvim-telescope/telescope.nvim提供项目列表过滤接口,潭州教育源码支持多种搜索功能。
toggleterm.nvim Github: akinsho/toggleterm.nvim实现集成终端功能,使用一个键绑定轻松切换。
vim-fugitive Github: tpope/vim-fugitive提供图形界面管理 Git 存储库。
Gitsigns Github: lewis/gitsigns.nvim显示 Git 操作的标志,提供详细操作信息。
plenary.nvim Github: nvim-lua/plenary.nvim包含多个实用 Lua 模块,用于解决插件开发中的常见问题。
vim-repeat Github: tpope/vim-repeat提供对其他插件的“点重复”支持,增强操作效率。
Editorconfig Github: editorconfig/editorconfig-vim支持流行的 EditorConfig 文件,与 Neovim 集成。
vim-bbye Github: moll/vim-bbye提供关闭缓冲区而不影响布局的命令。
上述插件仅是 Neovim 社区中的一部分精选推荐。你可以根据自己的需求选择安装和配置它们,以定制 Neovim 环境,提升编程体验。在安装插件后,请记得查阅每个插件的文档或帮助页面,以获取详细配置和使用指南。希望本文能帮助你开始探索 Neovim 的强大功能和个性化定制。LuaJIT源码分析(一)搭建调试环境
LuaJIT,这个以高效著称的lua即时编译器(JIT),因其源码资料稀缺,促使我们不得不自建环境进行深入学习。分析源码的第一步,就是搭建一个可用于调试的环境,但即使是这个初始步骤,能找到的指导也相当有限,反映出LuaJIT的编译过程复杂性。
首先,从官方git仓库开始,通过命令`git clone /mpv-player/m...
脚本2:osd-bar
功能:使osd-bar始终显示(进度条兼色彩调整条)。
链接:github.com//MP...
通过调整mpv.conf设置,下载并放置好脚本后,重新打开mpv,底部将出现常驻进度条。在全屏模式下,进度条会自动隐藏。
脚本3:thumbfast
功能:生成预览图。
链接:github.com/po5/thumbfas...
脚本实现了一个额外的mpv程序,无需等待生成略缩图。下载并放置好脚本后,使用内置osc脚本,可以避免多程序运行带来的内存占用问题。
脚本4:pressaction
功能:实现长按动作,如倍速播放。脚本可自定义实现长按倍速,例如将空格键设置为长按3倍速。
链接:github.com/Natural-Harm...
脚本5:playlistmanager
功能:播放列表增强功能。
链接:github.com/jonniek/mpv-...
mpv原始播放列表功能有限,而此脚本添加了如翻页、播放、删除和调整播放列表位置等功能。
脚本6:webm
功能:提供视频/音频/gif剪辑导出功能。
链接:github.com/ekisu/mpv-we...
使用该脚本可实现c裁剪画面、设置开始结束时间、预览、编码导出等功能。脚本的启动快捷键可自定义。
脚本7:stats.lua汉化版
功能:显示当前播放文件的相关信息与统计数据。
链接:无特定链接,需要在mpv.conf禁用内置脚本后,将汉化版stats.lua置于mpv\portable_config\scripts文件夹。
脚本8:外置OSC
功能:替换mpv内置的OSC,提供外观、风格或实现其他功能。
非特定链接,推荐支持thumbfast的脚本。
脚本9:recent
功能:显示最近播放的文件,并直接在脚本中打开。
链接:github.com/hacel/recent
脚本:file-browser
功能:提供文件夹切换、文件浏览选择播放、添加到列表等功能。
链接:GitHub - CogentRedTester/mpv-file-browser: A simple no-dependency file browser for mpv player
与playlistmanager相比,功能更为强大,但自定义也更复杂。推荐将其作为playlistmanager的补充。
脚本下载及使用说明链接:pan.baidu.com/s/1Xuoni0... 提取码: sxpk 或 wwul.lanzoue.com/bhp... 密码:mpvio
Lua性能优化(四):ELuaProfiler使用手册
本文将深入介绍ELuaProfiler的使用方法,包括其内存剖析器和CPU性能监视器两部分。首先,作为ELuaProfiler的使用指南,我们将在GitHub仓库 ELuaProfiler中进行详细讲解。
ELuaMonitor是CPU性能的关键部分,它能够识别Lua的性能瓶颈和内存管理问题。监控界面如图所示,提供三种工作模式:逐帧(PerFrame)、累计(Total)以及统计(Statistics)。逐帧模式允许帧间回溯,Total模式用于长期监控,而Statistics模式则用于单函数性能分析。
MonitorController区域包含控制按钮,如Play用于开始和暂停Profiler,Clear用于清空数据,NextFrame/PrevFrame进行帧间切换,以及显示当前帧数和总帧数。MonitorData展示详细性能指标,如函数调用时间、内存分配和GC情况,以及Max Depth设置以减少Profiler误差。
同时,ELuaMemAnalyzer用于内存分析,包括Snapshot功能,通过逻辑运算帮助识别内存泄露。通过与、或和异或运算,可以对比不同时间点的内存状况,如查找内存增长点和潜在泄露。
项目未来计划包括远程Profile功能,实现Server和Client间的性能共享;增加Profile数据的序列化和反序列化,便于数据存储和管理;以及改进ELuaMonitor的PerFrame模式,提供更直观的性能曲线展示。
以上是ELuaProfiler的使用指南和后续开发计划,希望对优化Lua性能提供实用工具和参考。