【发布时间】:2011-04-24 16:47:50
【问题描述】:
我已将 LuaInterface 项目嵌入到使用 .NET Framework 4.0 用 C# 编写的应用程序中。在编译 LuaInterface 和 Lua 5.1 之后,我在我的应用程序中引用了它们并创建了一个 Lua VM 并公开了一些 .NET 类。 Lua VM 调用次数不多时,性能完全不受影响;但是当它开始调用大量 .NET 函数时,整个应用程序会变得缓慢且无响应。
为此,我创建了一个额外的线程来运行 Lua VM。但是由于某种原因,在 Lua 执行函数调用时,更新 GUI 的线程不会更新,从而导致 GUI 卡顿。四处移动窗口时,您可以清楚地看到它一会没有响应,然后移动,没有响应等。
我该如何解决这个问题?我的印象是给 Lua 自己的线程,不同的线程不应该受到影响!这在某种程度上纯粹与我自己的代码有关吗? LuaInterface 调用 .NET 函数(性能方面)是否存在一些严重问题?我还能用什么?
【问题讨论】:
-
我们可以提供一些您的代码示例吗?
-
有几个
ifs。系统 CPU 负载,您有多少个内核可用(只有一个?),程序是否在等待 Lua 代码的结果,Lua 代码是否与主应用程序的消息队列交互,等等。InterOp 调用本身应该顺便说一句,不要阻塞其他线程。 (但是,进行 InterOp 调用需要“固定”一些 GC 对象(不得更改内存位置),因此根据使用它的类型,GC 性能可能会变差......但通常 i> 数量不多。
标签: c# .net lua luainterface