Faster string to double

Here is a test program. On Windows 10, with an Intel i7-10710U CPU, the program runs in 1.4 s with Intel Fortran OneAPI, and in 27 s with Gfortran 10.2 (Cygwin).

program IntlWrite
   implicit none
   character(120) :: str
   integer :: i,j
   double precision :: x(10) = (/ 7.569d-1,  5.556d-1, -1.640d-1,  9.362d-1,  1.057d-1, &
                    -2.385d-1, -9.541d-1,  1.449d-1, -7.885d-1, -1.108d-1 /)
   Integer, parameter :: tkind = selected_int_kind(15)
   Integer(tkind) :: tcnt1, tcnt2, trate

   call system_clock(tcnt1,trate)
   do j=1, 1000000
      write (str,'(1P,10ES11.3)') x
      if (mod(j,200000).eq.0) write (*,'(1x,I7,2x,A)') j, str
   end do
   call system_clock(tcnt2)
   print '(1x,A,2x,F6.3,A)','Time used (System_Clock) : ', &
      real(tcnt2-tcnt1)/trate,' sec'
end program

See also the GCC-libFortran bug report that JohnCampbell alluded to. That report was filed in November 2016, and the issue was closed in June 2018.