20.
@无名啊,我大胆预测一下,Windows没有把最快的核心分配给计算任务,或者最快核心在Windows里频率比Linux里低,导致了性能差异。
21.
会不会是内存寻址多了几层,导致慢了。。
@无名啊,应该不会产生9%的差异才对。虚拟化是硬件执行的,实际上只是切换命名空间而已,只在切换的一瞬间有额外时间开销,切完了就和正常寻址一样了。
22.
@老虎会游泳,我测试时,同时开 2 个转码,确保吃满所有 8 核 16 线程的(都是大核)
另外,所有测试都是开 54W TDP,转的时候看功耗测试,整机都是 72W 左右。
23.
@无名啊,你两边的测试程序是同一个二进制吗?不会是一边-O2优化一边-O3优化产生的性能差异吧。应该在一边编译然后拿到另一边运行,确保跑的是同一个程序。甚至还可以WSL2直接挂载Linux分区,chroot到物理分区的Linux系统里,确保不是库版本不同产生了性能差异。
24.
确保吃满所有 8 核 16 线程
那9%应该就是被Windows GUI和后台任务拿走了。Windows的后台任务远多于Linux,甚至任务管理器本身就是一个CPU时间消耗大户。
所以测全核性能的话Windows肯定是赶不上Linux的,更赶不上没有运行桌面只运行命令行界面的Linux。
Ubuntu桌面在用户不操作的情况下几乎不会增加多少CPU占用,而Windows桌面的后台进程一个个都非常活跃,占用的CPU时间是Ubuntu远远不能比的。
25.
@老虎会游泳,是同一个(Clang 20 编译出来的)二进制文件。
具体测试过程,同时开两个 bash 写命令转码,第一个分别转 AB 文件,第二个转 BA 文件。
因为只转一个时,我看 Ubuntu CPU 历史占用曲线,都是隔几秒就空闲一下。。
而且统计总功耗,同时转两个,总耗电最少。。(如下图,99 < 53 * 2)

26.
@老虎会游泳,那我用 MSVC / msys2 / … 转出 Win 原生程序后,再到安全模式 / WinPE 上测测速度?
那9%应该就是被Windows GUI和后台任务拿走了。Windows的后台任务远多于Linux,甚至任务管理器本身就是一个CPU时间消耗大户。


27.
@无名啊,安全模式的后台进程不比正常模式少,微软的很多服务依然会启动。想减少后台进程影响只能去PE了。
Windows安装光盘的PE应该是最纯净的,按Shift+F10可以打开cmd窗口。
第三方PE也会启动一些后台服务。
我推荐用MSVC编译,“多线程”那个参数选 /MT
(多线程,静态链接),这样运行前就不需要安装VC++运行库了。
28.
@无名啊,是的,我以为你是说Visual Basic Script。