将 LuaInterface 嵌入 C#应用程序会导致性能缓慢?
2010-10-13 7:2:18
收藏:0
阅读:121
评论:1
我已经将LuaInterface项目嵌入到使用.NET Framework 4.0编写的C#应用程序中。在编译LuaInterface和Lua 5.1之后,我将它们引用到我的应用程序中,并创建了一个Lua VM并暴露了一些.NET类。当Lua VM不进行太多调用时,性能不会受到任何影响;但当它开始调用大量.NET函数时,整个应用程序变得缓慢和不响应。
为了解决这个问题,我另外开了一个线程来运行Lua VM。但出于某种原因,GUI更新的线程在Lua执行函数调用时不会更新,导致GUI出现卡顿。当移动窗口时,您可以清楚地看到它在一小段时间内没有响应,然后移动,没有响应,等等。
我该如何解决这个问题?我认为让Lua有自己的线程,不应该影响其他线程!这纯粹与我的代码有关吗?LuaInterface在调用.NET函数方面是否存在严重问题(在性能方面)?我还能使用什么?
原文链接 https://stackoverflow.com/questions/3921424
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
我没有尝试将 LuaInterface 编译为 .NET 4。到目前为止,我只使用了预编译的dll文件。我知道你可以通过将“mixed image assemblies”设置为零,在.NET 4中加快速度。根据微软的说法:.NET Framework 4中,流线型的互操作封送结构提供了从托管代码到非托管代码的转换的显着性能提升。
http://msdn.microsoft.com/en-us/library/ff361650.aspx
如果你发现一个适合你的技巧,请让我们知道最新情况。在Visual Studio 2010中,您实际上可以构建 .NET 2,因此如果我是你,我会尝试创建一个虚拟程序,并将其编译为多个目标。这可能会有助于您量化使用 .NET 4 时的速度降低。
如果您提供一些代码,也许我可以稍微研究一下并找出问题所在。我非常感兴趣 LuaInterface ,并渴望找出问题所在。
由于我没有代码样例,因此我只是在推测;但是与您的UI不是线程安全有关的问题可能很常见。例如,常常会出现与Windows Forms控件相关的锁定问题。
如何:使对Windows Forms控件的调用是线程安全的 http://msdn.microsoft.com/en-us/library/ms171728(v=vs.80).aspx