Как ускорить загрузку изображений

Совет пользователям dlib. Не декодируйте изображение напрямую из файлового потока, это слишком медленно. Вместо этого рекомендую загрузить файл в память целиком, создать поток массива (ArrayStream) и уже его передавать в функцию-декодер:

InputStream input = openForInput("image.jpg");
ubyte[] data = New!(ubyte[])(input.size);
input.fillArray(data);
ArrayStream arrStrm = New!ArrayStream(data);
SuperImage img = loadJPEG(arrStrm);
Delete(arrStrm);
Delete(data);
input.close();

Для JPEG, например, это дает ускорение в 5-10 раз, в зависимости от размера картинки.

Новые статьи

Я написал две статьи на Medium (на английском):

Game UI with Nuklear – о тулкитах немедленного режима и о том, как использовать Nuklear в приложениях на основе Dagon. Я задумал цикл статей на эту тему, так как Nuklear поддерживает очень много всякого интересного, и на нем можно делать достаточно сложные вещи.

Metaprogramming with Alias Sequences – вводная статья о последовательностях псевдонимов. Это довольно мощный инструмент метапрограммирования в D, хотя и редко используемый.

DagoBan

DagoBan возвращается! Игра, изначально написанная Mateusz Muszyński в целях демонстрации возможностей тулкита Nuklear в Dagon, недавно была портирована мной на актуальную версию движка. Сборку для Windows можно скачать здесь.

Напомню, DagoBan – это мини-клон Sokoban на D со встроенным редактором уровней.

Новые статьи на Medium

Написал две новые статьи на английском:

  • dlib: Past, Present and Future – экскурс в историю dlib, о текущем статусе проекта и планах на будущее;
  • GitHub Actions and D – о том, как настроить тестирование на GitHub Actions для проектов на D.

D в статистике Codecov

Интересная новость: согласно годовому отчету Codecov по анализу покрытия OpenSource-кода, D стал резко популярнее. За 2020 год использование языка возросло в 2.18 раз, он находится на третьем месте по динамике роста, уступая Objective-C и Groovy.