背景:我读了几篇关于LuaJIT和C语言之间性能基准测试的文章。有不同的结论,所以我试着比较LuaJIT和C在我自己的用例中的速度。
我测试的函数使用了大量的数值和几个数学公式。这是我正在制作的CAD模块中的一个计算密集型部分。只是循环和公式。
我发现(在我的测试中) LuaJIT确实可以超过GCC ( 10 %到15%)。(我为gcc使用了FFI-数组和-o3优化)
有点伤感..。我喜欢这样的想法:对于真正快速的程序来说,旧的C语言仍然是最好的。令人欣慰的是,LuaJIT在FFI:-)中使用了C风格的数组。)
但这也很神奇..。多年来,动态脚本语言总是比C慢得多,这是多年来的“常识”。令人惊讶的是,这种惊人的LuaJIT速度不是由一家大公司的力量建立的,而是由一个人的努力建立的。
核数:在这些基准测试期间,我查看了任务管理器中的性能选项卡。两个岩心在试验过程中表现出较高的活性,其余两个岩心仍处于低活性状态。LuaJIT和GCC (不管有没有优化)都是这样(我在Win7机器上做了测试)。
的问题是:真的是把工作分成两个核心吗?
有了LuaJIT,我可以想象一个进程正在为With编译部分工作,另一个进程用于实际计算。或者“垃圾收集”在一个单独的进程中运行?(我对垃圾收集一无所知)
但当C程序运行时我看到了同样的活动轮廓.另外,如果没有gcc优化,就有两个核心活动.(但程序运行速度慢了3倍。)
会不会是Windows将工作划分为两个核心?我不是在找专业的技术解释。我也不想尝试从LuaJIT或C获得更快的速度,这个程序已经足够快了。
我只是好奇是否真的有两个核心在工作。如果可能的话,我更喜欢外行人的回答。
发布于 2021-12-08 23:49:51
令人惊讶的是,这个惊人的LuaJIT速度不是由一个大公司的力量建立的,而是由一个人的努力建立的。
“优秀的程序员以及在哪里找到他们”:-)
会不会是将工作划分成两个核心呢?
是的,Windows交换内核以减少CPU内部的温差:一个任务在两个核之间平均共享,一次只有一个核处于活动状态。
https://stackoverflow.com/questions/70282457
复制相似问题