The difference between dmrg_x and TDVP.dmrg

Hello all,
I am learning the example program in ITensorTDVP.jl.I successfully ran the program in the example and concluded that the ground state energy obtained using the “TDVP”, “dmrg”, and “ITensorTDVP.dmrg” functions is almost consistent.

ϕ = tdvp(
  H,
  -1.0,
  ψ;
  nsweeps=20,
  reverse_step=false,
  normalize=true,
  maxdim=30,
  cutoff=1e-10,
  outputlevel=1,
)

e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)

ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)

out:

inner(ϕ', H, ϕ) / inner(ϕ, ϕ) = -3.8557706724019356
inner(ϕ2', H, ϕ2) / inner(ϕ2, ϕ2) = -3.8557718806577608
inner(ϕ3', H, ϕ3) / inner(ϕ3, ϕ3) = -3.85577188065776

But when I use “dmrg_x” in the second example program, i obtained some different results.

ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)

out:

inner(ϕ4', H, ϕ4) / inner(ϕ4, ϕ4) = -2.0108634600077835

It is obvious that the energy obtained by “dmrg_x” is significantly different from the previous three. I don’t understand if it’s because of my incorrect parameter settings or my incorrect usage of these functions.
And the running time of “dmrg_x” is significantly longer than those

e2, ϕ2 = dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10)
After sweep 1 energy=-3.855675239456714  maxlinkdim=20 maxerr=2.02E-06 time=0.027
After sweep 2 energy=-3.85577157471479  maxlinkdim=20 maxerr=3.00E-07 time=0.021
After sweep 3 energy=-3.8557716229615386  maxlinkdim=20 maxerr=2.89E-07 time=0.028
After sweep 4 energy=-3.8557716700495535  maxlinkdim=20 maxerr=2.74E-07 time=0.025
After sweep 5 energy=-3.8557717129654874  maxlinkdim=20 maxerr=2.59E-07 time=0.028
After sweep 6 energy=-3.8557717540676437  maxlinkdim=20 maxerr=2.44E-07 time=0.038
After sweep 7 energy=-3.855771793233654  maxlinkdim=20 maxerr=2.31E-07 time=0.023
After sweep 8 energy=-3.85577183038367  maxlinkdim=20 maxerr=2.19E-07 time=0.022
After sweep 9 energy=-3.855771865602356  maxlinkdim=20 maxerr=2.08E-07 time=0.024
After sweep 10 energy=-3.8557718989883014  maxlinkdim=20 maxerr=1.97E-07 time=0.026

ϕ3 = ITensorTDVP.dmrg(H, ψ; nsweeps=10, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=2.02E-06 current_time=Inf time=0.035
After sweep 2: maxlinkdim=20 maxerr=3.00E-07 current_time=Inf time=0.019
After sweep 3: maxlinkdim=20 maxerr=2.82E-07 current_time=Inf time=0.024
After sweep 4: maxlinkdim=20 maxerr=2.67E-07 current_time=Inf time=0.027
After sweep 5: maxlinkdim=20 maxerr=2.51E-07 current_time=Inf time=0.027
After sweep 6: maxlinkdim=20 maxerr=2.37E-07 current_time=Inf time=0.059
After sweep 7: maxlinkdim=20 maxerr=2.25E-07 current_time=Inf time=0.03
After sweep 8: maxlinkdim=20 maxerr=2.13E-07 current_time=Inf time=0.021
After sweep 9: maxlinkdim=20 maxerr=2.02E-07 current_time=Inf time=0.026
After sweep 10: maxlinkdim=20 maxerr=1.92E-07 current_time=Inf time=0.028

ϕ4 = dmrg_x(H, ψ; nsweeps=10, reverse_step=false, normalize=true, maxdim=20, cutoff=1e-10, outputlevel=1)
After sweep 1: maxlinkdim=20 maxerr=6.52E-03 current_time=Inf time=1.132
After sweep 2: maxlinkdim=20 maxerr=8.37E-03 current_time=Inf time=1.615
After sweep 3: maxlinkdim=20 maxerr=6.05E-03 current_time=Inf time=1.553
After sweep 4: maxlinkdim=20 maxerr=2.37E-03 current_time=Inf time=1.912
After sweep 5: maxlinkdim=20 maxerr=2.41E-03 current_time=Inf time=1.623
After sweep 6: maxlinkdim=20 maxerr=4.68E-03 current_time=Inf time=1.723
After sweep 7: maxlinkdim=20 maxerr=5.73E-03 current_time=Inf time=1.675
After sweep 8: maxlinkdim=20 maxerr=9.67E-03 current_time=Inf time=1.731
After sweep 9: maxlinkdim=20 maxerr=3.57E-03 current_time=Inf time=1.69
After sweep 10: maxlinkdim=20 maxerr=4.14E-03 current_time=Inf time=1.79

If there could be a detailed tutorial document on TDVP, I believe it would reduce a lot of unnecessary inquiries.
Thank you for your time.