Архив по этикетке: оптимизация

Июл 20 2014

Вывод изображения на экран в SkyLA

Для формирования изображения окна запускающего приложения 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. Результат не может не радовать: …

Читать далее »