问题标签 [sol3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
56 浏览

lua - sol3:是否可以重置 lua 状态,以便可以从头重新运行任何协程函数?

这是我设置的整体流程:

“new_lua_state”在一切开始时被调用一次,然后在我想执行一个新的 lua 脚本(产生)时调用“play”。“更新”每帧执行一次,并推进协程直到完成,此时它停止。

问题: 如果我在前一个脚本协程已经yield但尚未完成时调用“play”,我希望lua丢弃整个环境并创建一个新的,丢弃旧的协程,重新解析脚本,创建一个品牌新的协程并从头开始执行。

相反,我得到的是协程仍然会从前一个脚本协程的状态(应该完全丢弃)而不是从一开始就运行。

这怎么可能?协程的状态究竟存储在哪里?我尝试用线程包装状态,我尝试调用 lua.clear_stack 但没有任何区别,因为当我重新解析脚本并重新创建 sol::协程对象。

任何澄清都非常感谢。

0 投票
0 回答
53 浏览

c++ - 为什么 sol2 比 LuaBridge3 慢?

我已经做了一些基准测试(lua-benchmarks)。由于某种原因,sol2 的执行速度比 LuaBridge3 慢。
在 sol2 repo 中,您可以找到显示 sol2 必须优于 LuaBridge3 ( benchmarks ) 的基准测试,但出于某种原因,在实际用例中并非如此。
在 LuaBridge3 文档中,您可以找到该语句(LuaBridge3 文档):

虽然它接近最高可能的性能,但 LuaBridge 并不是最快的,OOLua 和 sol2 在某些测试中优于 LuaBridge,但它们也更大且编译速度更慢。

那么,为什么 sol2 在我的基准测试中比较慢呢?

Sol2 基准测试:

LuaBridge3 基准测试:

UPD:
Sol2 基准测试(带有 -O3 标志):

LuaBridge3 基准测试(带有 -O3 标志):