问题标签 [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.
lua - sol3:是否可以重置 lua 状态,以便可以从头重新运行任何协程函数?
这是我设置的整体流程:
“new_lua_state”在一切开始时被调用一次,然后在我想执行一个新的 lua 脚本(产生)时调用“play”。“更新”每帧执行一次,并推进协程直到完成,此时它停止。
问题: 如果我在前一个脚本协程已经yield但尚未完成时调用“play”,我希望lua丢弃整个环境并创建一个新的,丢弃旧的协程,重新解析脚本,创建一个品牌新的协程并从头开始执行。
相反,我得到的是协程仍然会从前一个脚本协程的状态(应该完全丢弃)而不是从一开始就运行。
这怎么可能?协程的状态究竟存储在哪里?我尝试用线程包装状态,我尝试调用 lua.clear_stack 但没有任何区别,因为当我重新解析脚本并重新创建 sol::协程对象。
任何澄清都非常感谢。
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 标志):