Pull to refresh

Comments 5

это сделать можно, но пока я сделаю это сам, заинтересованные читатели могут меня опередить.
Заинтересованные читатели меня не опередили. Поэтому я сделал С++ тест сам.
Производилось всё на другом компе, поэтому дам сравнительные скорости на нем.
Делалось 15 итераций по 45000 тиков.

Haskell (ghc -O2): в среднем 6400 мсек = 105К итераций/сек
C++ (g++ -O3): в среднем 1700 мсек = 400К итераций/сек.

Я варьировал всякие опции для ghc, но оно особо не улучшило.
Затем, я запускал «time ./BenchVM». И смотрел на цифру, и снова запускал.
Время работы бинарника иногда подымалось до 7500 секунд, но потом опускалось до 6300-6500.

Вот примерный вывод (Хаскельный вариант):

93401980065e8, o39 = 0.0, o100 = 5.219733041393699e7, o101 = 3.800730001674274e8}
   4,168,385,896 bytes allocated in the heap
       6,053,464 bytes copied during GC
          48,272 bytes maximum residency (2 sample(s))
          36,384 bytes maximum slop
               2 MB total memory in use (0 MB lost due to fragmentation)

  Generation 0:  7954 collections,     0 parallel,  0.09s,  0.08s elapsed
  Generation 1:     2 collections,     0 parallel,  0.00s,  0.00s elapsed

  INIT  time    0.00s  (  0.00s elapsed)
  MUT   time    6.13s  (  6.18s elapsed)
  GC    time    0.09s  (  0.08s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time    6.22s  (  6.25s elapsed)

  %GC time       1.5%  (1.2% elapsed)

  Alloc rate    680,041,962 bytes per MUT second

  Productivity  98.5% of total user, 98.0% of total elapsed


real	0m6.256s
user	0m6.223s
sys	0m0.023s



Вот примерный вывод (С++ вариант):

$ time ./vm 
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1
done1

real	0m1.847s
user	0m1.833s
sys	0m0.000s
UFO landed and left these words here
Sign up to leave a comment.

Articles