История изменений
Исправление monk, (текущая версия) :
Поэтому на 8гб результаты, на мой взгляд, точнее
Формально, в постановке задачи «на гигабайтном входном файле» и архитектура amd64. То есть косвенно утверждается, что файл обязан помещаться в память.
С другой стороны, в постановке задачи не утверждается, что можно предварительно до измерения прочитать файл. То есть для измерения надо сбрасывать кэш перед запуском программы.
С чисткой кэша (перед каждым тестом sync; echo 3 > /proc/sys/vm/drop_caches
) получается
$ time ./tsar_calc float < input.txt
-6.5364475
real 0m4,426s
user 0m2,343s
sys 0m0,518s
$ time racket rpn.rkt
-6.536447525024414
real 0m4,466s
user 0m3,182s
sys 0m0,776s
$ time target/release/rpn-eval
-6.5364475
real 0m3,532s
user 0m2,505s
sys 0m0,737s
Если Racket запускать через racketd, то
$ time racketd-client compiled/rpn_rkt.zo
-6.536447525024414
real 0m3,872s
user 0m0,001s
sys 0m0,005s
Исходная версия monk, :
Поэтому на 8гб результаты, на мой взгляд, точнее
Формально, в постановке задачи «на гигабайтном входном файле» и архитектура amd64. То есть косвенно утверждается, что файл обязан помещаться в память.
С другой стороны, в постановке задачи не утверждается, что можно предварительно до измерения прочитать файл. То есть для измерения надо сбрасывать кэш перед запуском программы.
С чисткой кэша (перед каждым тестом sync; echo 3 > /proc/sys/vm/drop_caches
) полукчается
$ time ./tsar_calc float < input.txt
-6.5364475
real 0m4,426s
user 0m2,343s
sys 0m0,518s
$ time racket rpn.rkt
-6.536447525024414
real 0m4,466s
user 0m3,182s
sys 0m0,776s
$ time target/release/rpn-eval
-6.5364475
real 0m3,532s
user 0m2,505s
sys 0m0,737s
Если Racket запускать через racketd, то
$ time racketd-client compiled/rpn_rkt.zo
-6.536447525024414
real 0m3,872s
user 0m0,001s
sys 0m0,005s