LINUX.ORG.RU

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

Исправление 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