проблемы :
-
Unix.select : получает и возвращает списки и это под нагрузкой трешит GC.
-
много Callback.register: дорогая регистрация, все коллбэки регистрируются в global_root'ы,
- решение - коллбэки диспатчить через хэштаблицу прямо в камле
решения :
- писать event-driven
- написать свой враппер на массивах, использовать libevent или более прямую альтернативу - libev
- вместо того, чтобы писать callback код, делать инверсию выполнения с
помощью cps + pa_monad.
- это сделано в lwt собственно и можно использовать libev (либо другие асинхронные обёртки) вместо select.