我目前在我的C++应用程序中使用QtScript编写脚本功能,但它在cpu上相当"重".当线程评估循环中的所有脚本时,cpu使用率增加到90%-100%.即使我每5个脚本让它睡眠1毫秒,它仍然高于75%的CPU使用率.
还有其他易于实现的脚本框架比QScript轻得多吗?
编辑:
我现在意识到这是正常的行为,而不是QtScript中的一些麻烦.听听哪种(轻量级)脚本库可用仍然很有趣.
看看Lua,它经常在游戏中使用,因此性能必须非常好.
那么,你期待什么?除非脚本必须等待磁盘或用户I/O,否则CPU 应该以100%运行.
问题是它运行得很长吗?
或者您的应用程序没有响应?
在这种情况下,问题是您的脚本阻塞了所有UI交互运行的线程.一般的解决方案是阻止所有UI输入("取消脚本"按钮:)除外,并将实际处理移动到单独的线程.
[edit]
略有不同的问题:CPU是否处于100%而没有要处理的脚本?
如果您正在处理某些事情,100%的CPU是好的和健康的.
CPU始终处于忙碌状态,当前线程始终消耗其运行的核心的100%."0%CPU活动"实际上意味着所有周期都花费在系统空闲线程中(属于您在任务管理器中看到的"系统空闲进程").
作为一个简单的示例:如果您有一个应用程序线程处于活动状态,并且CPU使用率为40%,并且您的任务管理器更新间隔为1秒,则在应用程序上花费400毫秒的CPU时间,在空闲线程上花费600毫秒.