crypt of decay - Post a comment [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

никогда такого не было, и вот опять... Sep. 11th, 2022|03:23 am

ketmar
впилил в редактор встроеный просмотрщик манов. парзятся они скриптами, конечно. пнул на тест ман по gcc, редактор выжрал всю память и не смог отформатить даже треть текста.

долго чесал репу, понял забавное: скриптодвижок учитывает только объекты, которые выделил в своих пулах. а содержимое строк хранит отдельно, например. поэтому пулы у него не очень заняты, зато вся память засрана копиями строк — которые можно и нужно собрать, но движок об этом не знает.

привинтил уведомления для гц о том, что дохуя чот памяти мимо него выделено, пора всё чистить. ман распарзило, но четырнадцать секунд. фи.

подумал-подумал — и вообще весь гц переписал: стал быстрее, и даже чуть меньше памяти на себя жрёт. заодно переписал немного парзер. в итоге выжирает дополнительно 32 мб (это лимит, после которого приходит гц и убирает всё говно), тот же ман парзится за ~260 мсек.

кстати, FlightGear простеньким скриптом тоже можно заставить выжрать всю память и потом адово наглючить (потому что я за основу взял движок скриптов оттуда).

вообще, я в движке сделал овердохуя улучшений и изменений, включая оптимизатор байткода (оно не зря выросло с 300 кб до 700), но увы: обратно во флайтгир оно не влезет. потому что и апи немного другой, и — что хуже — синтаксис скриптов. а у них там охулиард всего наскриптовано. может когда-нибудь попробую хотя бы самое вкусное им сбэкпортить.

вообще, надо бы GC ещё допилить: во-первых, скриптодвижок мультипотоковый (хоть я это и не использую), но на каждое выделение объекта хватает глобальный лок. надо бы сделать не глобальный набор пулов, а каждому потоку свой. и во-вторых, GC переделать из stop-the-world в инкрементальный. лично мне оно не особо надо, но флайтгиру очень поможет.
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message: