Сообщение от Aetae
|
1. У меня на машине ничего не тормозит.
|
Очeнь интересный момент!
У меня в Chromium под Raspbian 600MHz (лето: частоту занизил до плинтуса) линия на весь Canvas подвешивает браузер на 15-25 секунд и периодически выскакивает окошко с вопросом о принудительном завершении сценария!
(Скрипт отлаживать в таких жарких и тормозных условиях чудовищно сложно.)
Сообщение от Aetae
|
4. Скорее всего проблемы с производительностью и вовсе не в вызовах или математике, а во взаимодействии с браузерным api - тем же canvas например, но не поручусь - включите профалер в инструментах браузера и найдите что именно вызывает у вас тормоза, туда и смотрите.
|
Мой промах: Вы правы!
Стоило в листинге даже закомментировать «.canvas rax» - всё залетало!
Ещё притормаживает функция записи в журнал каждого снимка состояния регистров, которая к тому же безобразно написана: Два цикла с push'ами строк в массив. Но не так сильно, как ожидалось…
Всё же Canvas.toDataURL чудовищно просаживает всю производительность!
Буду искать другой метод: Не делать снимки всего Canvas, а просто сохранять координаты, куда ставить точки. Но это усложнит верхний уровень - реакция на «ползунок времени», где вместо простого вывода спрайта нужно будет пиксели стирать-ставить…
Сообщение от voraa
|
Вам уже не раз писали, что BigInt не имеет никакого отношения к 64 разрядным целым числам. Это вообще многобайтное (столько, сколько нужно) представление числа. Там может быть и 16 бит, и 64, и 128, и 1024...
|
Да, я это уже понял, когда потрудился не действовать методом интуитивного тыка, а вчитаться в спецификацию.
Хорошая фишка этот BigInt!
Для AVX нужно уметь работать с 512 битным словом, да ещё и упакованным.
Если сложение/вычитание ещё работает с упакованными данными по описанному мною трюку с масками выше, то сравнение и сложение/вычитание с насыщением (аналог Uint8ClampedArray) - очень сложная тема и как там с масками трюкачить - пока не понятно.
Сообщение от voraa
|
Операция вила n = n|0n для BigInt вообще не имеет никакого смысла. Число никак не изменяется.
Обычная операция для Number n = n|0 переводит в число в целое, отбрасывая дробную часть, и ограничивает целую часть 32 разрядами. Но BigInt и так целые, и разряды у них не ограничиваются.
|
Придётся мне непосредственно методом тыка действовать и изучать реакцию браузера!
![Lol](images/smilies/lol.gif)