Для формирования изображения окна запускающего приложения SkyLA использует внутренний софтварный рендер, в том числе и шрифтов. Далее уже сформированное во внутреннем буфере изображение передаётся операционной системе для вывода на экран. Такое решение позволяет полностью не зависеть от операционной системы в вопросе подготовки изображения, в том числе от наличия шрифтов и кодировки символов. Однако в работе …
Архив по этикетке: оптимизация
Май 16 2014
Оптимизация кода компилятором FreePascal`я
Мы все привыкли слышать о том, что Pascal медленнее C от 2-х до 5-ти раз. Это мнение глубоко укоренилось в головах большей части людей. Однако это не совсем так. Во первых корректно сравнивать конкретные компиляторы, а не языки в целом (т.к. у обоих языком компиляторов хватает). Во вторых в подавляющем большинстве тестов которые я видел …
Ноя 11 2013
SHLD/SHRD или сказ о том, как я “Intel® 64 and IA-32 Architectures Software Developer’s Manual” читал
Периодически, когда у меня выдаётся несколько свободных минут, но их маловато чтобы сделать что-то полезное, я убиваю время чтением “Intel® 64 and IA-32 Architectures Software Developer’s Manual”. И вот позавчера, во время очередного такого чтения, я наткнулся на описание инструкций SHLD/SHRD. Уж не знаю как я их до этого не замечал, но факт остаётся фактом …
Авг 24 2013
Переработал пул сообщений в CSO
В рамках подготовки к релизу CFW 0.2 проводил провожу переработку CSO. Во время выделения глобального пула сообщений в отдельный файл решил попробовать переписать его на asm`е. Сам по себе пул вроде не сложный, так что по идеи компилятор должен выдавать более-менее приличный код. Простейший тест в котором каждый поток сначала выделял, а потом освобождал 32768 …
Июн 08 2012
Обновление модуля RSA-шифрования в нашем фреймфорке
Модуль RSA-шифрования нашей библиотеки CFW (CatFrameWork) был разработан более 2-х лет назад и с тех пор не использовался. Мне достоверно неизвестно когда в него закралась ошибка (тогда еще в библиотеку не ввели юнит тесты с их обязательной проверкой перед каждым комитом в SVN) однако генерацию ключей не работала и падала с исключением непонятной природы.Сейчас же, …
Июн 06 2012
Алгоритм деления больших чисел
В процессе обновления своей библиотеки для RSA-шифрования столкнулся с ошибкой в распространённом алгоритме деления больших чисел. Причём эта ошибка была обнаружена мной совершенно случайно, ибо возникает она лишь в очень редких случаях и нигде не упоминается.
Дек 16 2011
Векторизация, векторизация и еще раз… о пользе новых инструкций
Сегодня проводил переработку старой версии “сохранялки скриншотов”. Задача в общем-то простая: есть картинка в формата DXGI_FORMAT_R10G10B10A2_UNORM, нужно сохранить её в *.bmp файл. Естественно по мимо того, что строки в bmp идут снизу вверх, он знать не хочет не про какой формат DXGI_FORMAT_R10G10B10A2_UNORM и его требуется конвертировать в B8G8R8 (да-да, 3 байта на пиксель ещё и …
Окт 30 2011
Lock-free hash-table (с открытой адресацией)
Взялся сегодня адаптировать старую реализацию сабжа под новые требования кэша ресурсов движка (теперь требуются таблицы не только статического, но и динамического размера). Беглый осмотр кода сразу выявил наличие явно отвратительных мест в виде лишних вызовов interlocked-функций в некоторых сценариях. Посмотрев на сравнительно небольшой размер функций решил переписать всё на asm. Результат не может не радовать: …