在C#应用程序中嵌入LuaInterface的性能会降低吗?

时间:2010-10-13 07:02:18

标签: c# .net lua luainterface

我已经将LuaInterface项目嵌入到使用.NET Framework 4.0以C#编写的应用程序中。在编译LuaInterface和Lua 5.1之后,我在我的应用程序中引用了它们并创建了一个Lua VM并暴露了一些.NET类。当Lua VM没有拨多个电话时,性能根本不会受到影响;但是当它开始调用大量.NET函数时,整个应用程序变得缓慢且无响应。

为此,我做了一个额外的线程来运行Lua VM。但是出于某种原因,当Lua正在进行函数调用时,更新GUI的线程将不会更新,从而导致GUI中出现断断续续的情况。当移动一个窗口时,你可以清楚地看到它没有响应一段时间,然后移动,没有响应等。

我该如何解决这个问题?我的印象是给Lua自己的线程,一个不同的线程不应该受到影响!这在某种程度上与我自己的代码完全相关吗? LuaInterface是否有一些调用.NET函数的严重问题(性能方面)?我还能用什么呢?

1 个答案:

答案 0 :(得分:0)

我没有尝试针对.NET 4编译LuaInterface。到目前为止,我只使用了预编译的dll。我知道你可以通过设置为零来加速.NET 4中的混合图像组件。根据MS:.NET Framework 4,简化的互操作编组体系结构为从托管代码到非托管代码的转换提供了显着的性能改进。

http://msdn.microsoft.com/en-us/library/ff361650.aspx

如果您发现适合您的技巧,请及时通知我们。在Visual Studio 2010中,您实际上可以针对.NET 2构建,所以如果我是你,我会尝试创建一个虚拟应用程序并针对多个目标进行编译。当您使用.NET 4时,它可以帮助您量化速度下降。

如果你给我们一些代码,也许我可以稍微玩一下,弄清楚出了什么问题。我对LuaInterface非常感兴趣并且想知道出了什么问题。

由于我没有代码示例,我只是在猜测这个;但问题可能与您的UI不是线程安全有关。例如,使用Windows窗体控件存在锁定问题是很常见的。

如何:对Windows窗体控件进行线程安全调用 http://msdn.microsoft.com/en-us/library/ms171728(v=vs.80).aspx