LuaJIT和GCC:核心数量
背景: 我读了几篇有关LuaJIT和C语言性能基准的文章。 它们得出了不同的结论,所以我试图比较LuaJIT和C在我的用例中的速度。
我测试的函数使用了一个大量的数字值数组和几个数学公式。 这是我正在制作的CAD模块中计算密集部分的一部分。 只是循环和公式。
我发现(在我的测试中)LuaJIT确实可以超过GCC(大约10到15%)。 (我使用FFI数组和-o3优化的GCC)
这有点令人沮丧...... 我喜欢这个想法,即对于真正快速的程序,旧的C语言仍然是最好的。 LuaJIT使用带有FFI的C风格数组有点令人安慰:-)
但这也是惊人的...... 多年来,“常识”是动态脚本语言总是(远远)比C慢。 精彩的是,这种惊人的LuaJIT速度不是由一个大公司的力量所确定,而是由一个人的努力所确定的。
核心数量: 在这些基准测试中,我查看了任务管理器中的性能选项卡。 在测试期间,有两个核心显示高活动量,另外两个核心保持低活动量。 这是LuaJIT和GCC的情况(有和没有优化) (我在Win7机器上进行测试。)
问题: 工作真的分摊到了两个核心吗?
对于LuaJIT,我可以想象一个进程用于JIT编译部分,另一个进程用于实际计算。 或者也许'垃圾回收'在单独的进程中运行? (我没有垃圾收集的知识)
但是当C程序在运行时,我看到相同的活动概况... 即使没有gcc优化,也有两个核心处于活动状态。 (但程序运行3倍慢。)
可能是Windows将工作分摊到了两个核心?? 我不想寻找深入的技术解释。 我也对尝试从LuaJIT或C中获得更多速度没有兴趣。 程序已经足够快了。
我只是好奇是否确实有两个核心正在“工作”。 如果可能,我更喜欢用外行人的术语回答。
原文链接 https://stackoverflow.com/questions/70282457
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
这是一个惊人的事实:LuaJIT 的惊人速度不是靠一家大公司的力量建立的,而是靠一个人的努力。
“奇妙的程序员以及他们的位置” :-)
可能是 Windows 把工作分配给了两个核心吗?
是的,Windows 会交换核心以减少 CPU 内部的温差:一个单核心的作业平均分配给两个核心,但每次只有一个核心处于活动状态。