Как стать автором
Обновить

Комментарии 5

поставьте пожалуйста хабракат)
а можно добавить еще вариант на C/C++?
это сделать можно, но пока я сделаю это сам, заинтересованные читатели могут меня опередить.
Заинтересованные читатели меня не опередили. Поэтому я сделал С++ тест сам.
Производилось всё на другом компе, поэтому дам сравнительные скорости на нем.
Делалось 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
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории