Сама идея эмуляции роста плесени была обоснована в одном из предыдущих постов: прокачать навык работы с Rust и проверить производительность.
Если коротко, то это работает так: в пространстве хаотически (каждый раз направление меняется) движется огромное количество точек (на примере - 500 на 500 точек), а в центре одна - опорная. Каждая точка, которая оказывается рядом с опорной - перестаёт двигаться и становится также опорной. Цикл повторяется до тех пор, пока все точки не станут опорными.
Если понаблюдать картину - то можно заметить древовидную структуру в формируемой "плесени".
Забегая вперёд, скажу - прироста производительности я не заметил. Вообще. FPS был примерно одинаковый и для rust-версии и для JS-версии. Однако, больше всего меня поразил Firefox - он обогнал по производительности Chrome. Примерно в 2 раза. При этом, Chrome обещал до 4.8 FPS, но на практике вызывал функцию перерисовки картинки лишь 3 раза в секунду, в то время как Firefox - больше 5.
Также, по-разному (что удивительно, ведь используется один и тот же генератор случайных значений) идёт заполнение поля. По какой-то причине JS-версия чаще начинает заполнять правый нижний угол, в то время как rust-версия действует примерно равномерно во все стороны.
Выводы:
- JS-компиляторы действительно хороши;
- Отказываться от Rust в связи с пунктом 1 торопиться не буду (интерес остаётся);
- Думаю, если использовать webgl вместо 2d - количество кадров может вырасти;
- Если интересно посмотреть, что получилось - милости прошу сюда (иногда rust-версия не выдаёт ошибку и рост не происходит; в этом случае достаточно просто перезагрузить страницу).
Исходники тут.