为什么启用 Hyper-V 会加速 MSYS2 的进程启动?

为什么启用 Hyper-V 会加速 MSYS2 的进程启动?

当我运行这个循环时管理系统2的 Bash shell

function test() {
    bcdedit | grep hypervisorlaunchtype
    printf "Press ENTER to begin..." 1>&2
    read
    # warm-up
    for ((i=0; i<"$1"; i++)); do $(:); done

    # actual iterations
    local tstart="$(date "+%s%3N")"
    iterations=0
    local i
    for ((i=2; i<"$1"; i++)); do $(:); done
    local tend="$(date "+%s%3N")"  # 2 extra spawns here
    printf "%s ms/spawn" $((("$tend" - "$tstart") / "$i")) 1>&2
    read
}
test 300

我到处走走23 毫秒/次如果hypervisorlaunchtypeoff,但周围4 毫秒/次如果是auto

以下是比较两者的 GIF使用相等的迭代次数:Hyper-V离开对阵Hyper-V汽车
请注意,CPU 时间统计信息不是由于损坏而保持在零——它们保持在零是因为它们实际上太小了。如果你让程序运行足够长的时间,它们将要增加。)

什么原因导致了这种差异?

相关内容