Посмотреть на Монстра
Nov 27, 2016
1 minute read

Сегодня хочу получить полноценный dbmonster - с бегущими циферками по экрану. До текущего момента я генерировал экраны в цикле, не передавая управление браузеру, и это надо исправить. Для этого мне надо по-честному воткнуться в message loop. Замечательный emscripten все сделал, пользую emscripten_set_main_loop.

Итак, все оказалось очень просто:

proc loop() {.cdecl.} =
  patch.clear()
  let data = getData()
  if i mod 2 == 1:
    b.clear()
    data.render(b)
    patch.diff(b.current, a.current)
  else:
    a.clear()
    data.render(a)
    patch.diff(a.current, b.current)
  patch.done()
  
  JSrender(patch.data.head)
  inc i

emscripten_set_main_loop(loop, 0, 0)

Safari: 18-19 FPS. В разы медленнее inferno. Через некоторое время падает с out of memory - не мудрено, я же отключил GC. Для начала попробую как то врубить GC: безопасно это только в main loop, и добиться стабильности:

  GC_enable()
  let x = newString(0)
  GC_disable()

17-18 FPS. Медленнее, чем большинство фреймворков. В Chrome вообще пиздец: 9-10 FPS. Утешаю себя тем, что я только начал и дело не в скорости, а в первую очередь в продуктивности и нежелании писать на JavaScript. Пока по всем параметрам я проигрываю.

Посмотреть на Монстра

Посмотреть на монстра в деле можно здесь: https://platoff.github.io/dbmonster. Код под тегом day-10 https://github.com/platoff/faxma/tree/day-10.


Назад, к записям


comments powered by Disqus