LINUX.ORG.RU

История изменений

Исправление skvitek, (текущая версия) :

Окей, нашёл у себя gfortran и смог скомпилировать герератор.

$ time ./ios_read
real 0m38.988s
user 0m38.656s
sys 0m0.352s

$ time ./mmap_read
real 0m16.660s
user 0m16.312s
sys 0m0.348s

И вот ваша фортрановская версия:

$ time ./fread
real 0m21.800s
user 0m21.516s
sys 0m0.288s

Не знаю только, зачем вы используете f08 и gfortran, если нужно f90 и ifort, но это мелочи.
Главный вывод - фортрановское стандартное I/O почти в 2 раза быстрее стандартного C/C++.
mmap версии просто повезло - она только читает. А вот, например, что нужно было делать:

input structure
b1
| t1: ev1 ev2 ev3 ... evn
| t2: ev1 ev2 ev3 ... evn
| ...
| tm: ev1 ev2 ev3 ... evn

output structure:
b1
| ev1: t1 t2 ... tm
| ev2: t1 t2 ... tm
| ...
| evn: t1 t2 ... tm

И со всеми добавками, уверяю, mmap не особо помогает и становится медленнее. Хотя, может вы напишете лучше меня.

Исправление skvitek, :

Окей, нашёл у себя gfortran и смог скомпилировать герератор.

$ time ./ios_read
real 0m38.988s
user 0m38.656s
sys 0m0.352s

$ time ./mmap_read
real 0m16.660s
user 0m16.312s
sys 0m0.348s

И вот ваша фортрановская версия:

$ time ./fread
real 0m21.800s
user 0m21.516s
sys 0m0.288s

Не знаю только, зачем вы используете f08 и gfortran, если нужно f90 и ifort, но это мелочи.
Главный вывод - фортрановское стандартное I/O почти в 2 раза быстрее стандартного C/C++.
mmap версии просто повезло - она только читает. А вот, например, что нужно было делать:

input structure
b1
| t1: ev1 ev2 ev3 ... evn
| t2: ev1 ev2 ev3 ... evn
| ...
| tn: ev1 ev2 ev3 ... evn

output structure:
b1
| ev1: t1 t2 ... tn
| ev2: t1 t2 ... tn
| ...
| evn: t1 t2 ... tn

И со всеми добавками, уверяю, mmap не особо помогает и становится медленнее. Хотя, может вы напишете лучше меня.

Исходная версия skvitek, :

Окей, нашёл у себя gfortran и смог скомпилировать герератор.

$ time ./ios_read
real 0m38.988s
user 0m38.656s
sys 0m0.352s

$ time ./mmap_read
real 0m16.660s
user 0m16.312s
sys 0m0.348s

И вот ваша фортрановская версия:

$ time ./fread
real 0m21.800s
user 0m21.516s
sys 0m0.288s

Не знаю только, зачем вы используете f08 и gfortran, если нужно f90 и ifort, но это мелочи.
Главный вывод - фортрановское стандартное I/O почти в 2 раза быстрее стандартного C/C++.
mmap версии просто повезло, потому что она только читает. А вот, например, что нужно было делать:

input structure
b1
| t1: ev1 ev2 ev3 ... evn
| t2: ev1 ev2 ev3 ... evn
| ...
| tn: ev1 ev2 ev3 ... evn

output structure:
b1
| ev1: t1 t2 ... tn
| ev2: t1 t2 ... tn
| ...
| evn: t1 t2 ... tn

И со всеми добавками, уверяю, mmap не особо помогает и становится медленнее. Хотя, может вы напишете лучше меня.