https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91030

--- Comment #11 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to David Edelsohn from comment #10)
> With EXT4: difference is 2x
> With SHM: difference is 4.5x
> With GPFS: difference is 10x
> 
> Is libgfortran doing something unusual with the creation of files?

Not really, but there is one difference.

Stracing with -fconvert=native gives

open("out.dat", O_RDWR|O_CREAT|O_CLOEXEC, 0666) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2000000008, ...}) = 0
write(3, "\0\0\0\0", 4)                 = 4
write(3,
"\0\0\0\0\0\0\360?\0\0\0\0\0\0\360?\0\0\0\0\0\0\360?\0\0\0\0\0\0\360?"...,
2000000000) = 2000000000
lseek(3, 0, SEEK_SET)                   = 0
write(3, "\0\2245w", 4)                 = 4
lseek(3, 2000000004, SEEK_SET)          = 2000000004
write(3, "\0\2245w", 4)                 = 4
ftruncate(3, 2000000008)                = 0
close(3)                                = 0

and using -fconvert=swap

open("out.dat", O_RDWR|O_CREAT|O_CLOEXEC, 0666) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2000000008, ...}) = 0
write(3,
"\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0"...,
7684) = 7684
write(3,
"?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0"...,
8192) = 8192
write(3,
"?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0"...,
8192) = 8192

[...]

write(3,
"?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0"...,
8192) = 8192                                                                    
write(3,
"?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0"...,
8192) = 8192                                                                    
write(3,
"?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0?\360\0\0\0\0\0\0"...,
5632) = 5632                                                                    
lseek(3, 0, SEEK_SET)                   = 0                                     
write(3, "w5\224\0", 4)                 = 4                                     
lseek(3, 2000000004, SEEK_SET)          = 2000000004                            
write(3, "w5\224\0", 4)                 = 4                                     
ftruncate(3, 2000000008)                = 0                                     
close(3)                                = 0

Would this make such a large difference?

Reply via email to