FreeBasic
Главная
Вход
Регистрация
Вторник, 03.12.2024, 21:04Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
FreeBasicBUILD сборка 0.90
WQДата: Воскресенье, 02.12.2018, 23:19 | Сообщение # 16
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Вот эта тема
https://www.freebasic.net/forum/viewtopic.php?f=3&t=22516
И оттуда еще:
https://sourceforge.net/p....9b6c631
https://sourceforge.net/p....a7f48f8

Насколько я понял, "особо она ничего не делает и от удаления ссылки  ничего не случится"

Еще в процессе наткнулся на библиотеку загрузки изображений stb
https://github.com/nothings/stb
На C, лицензия public domain
Только tiff не грузит
Да, собственно, D.J.Peters из этого же проекта использовал stb_truetype.h в FBTrueType
Не пойму, почему я раньше не заметил, там много чего интересного есть

....
Что-то я вообще...
FBImage тоже на основе stb
Ведь раньше в исходный код заглядывал, и не вспомнил


Сообщение отредактировал WQ - Понедельник, 03.12.2018, 00:25
 
haavДата: Понедельник, 03.12.2018, 12:47 | Сообщение # 17
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Ну понятно. dkl решил, что проблемы совместимости не будут всплывать, но время показало, что он ошибся.

Цитата WQ ()
Ведь раньше в исходный код заглядывал, и не вспомнил


Это нормально smile Информации много , одна пишется , другая уходит далеко в закрома памяти. И чем старше будешь становиться , тем больше будешь на одном месте по нескольку раз топтаться. Я уже неоднократно себя чувствовал хомяком в колесе smile


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Четверг, 13.12.2018, 14:57 | Сообщение # 18
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Вообще FBImage, видимо, на основе какой-то очень старой версии stb, нет поддержки gif
Скомпилировал последнюю версию - по размеру особой разницы нет.
Еще оказалось важным поиграться с настройками оптимизации компилятора C - это позволило ускорить загрузку изображений в 2 раза (в CodeBlocks на это никогда не обращал внимания, думая, что там по умолчанию все на максимуме, оказалось, нет)
Также получилось, что работа с пикселями в C примерно в 3 раза быстрее, чем в freebasic

Жалко, в stb нет поддержи tiff.
Для этого формата нет небольшого кода для чтения, в отличие от jpg и т.д. А добавление libtiif тянет за собой стандартную библиотеку чтения jpg и библиотеки работы со сжатыми данными... В Windows проще использовать gdip+
stb (без специфических форматов)+libtiff примерно 700 кб
библиотека IM в зависимости от версий примерно 1 мб, но там и форматов побольше, например, RAW, ICO


Сообщение отредактировал WQ - Четверг, 13.12.2018, 14:58
 
haavДата: Четверг, 13.12.2018, 22:12 | Сообщение # 19
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата WQ ()
Также получилось, что работа с пикселями в C примерно в 3 раза быстрее, чем в freebasic


Ну это ты че то не так сделал. Я верю, что компилятор GNU C++ создает более шустрый код, но не в три же раза.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Четверг, 13.12.2018, 23:17 | Сообщение # 20
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
Ну это ты че то не так сделал. Я верю, что компилятор GNU C++ создает более шустрый код, но не в три же раза.
Схема примерно такая: например, получаю с помощью FBImage картинку и далее переношу пиксели в канвас библиотеки CD
Доступ к канвасу через 3 указателя ubyte (для каждого компонента цвета свой) из-за чего приходится перебирать все пиксели, выделять компоненты цвета
Получение картинки допустим 0.25 сек И перебор всех пикселей тоже 0.25
Если же взять stb и прямо в код C отправить эти 3 указателя и там в точно таком же цикле скопировать, в совокупности получается 0.35 сек
Ну возможно что в FBImage  время уходит на какие-то преобразования или что-то не оптимизировано, опять же версия stb постарше

Мне почему-то приходится постоянно писать какой-то экстремальный код, или нужно, чтобы по размеру был небольшой, или очень быстрый
Казалось бы, 0.5 секунды - это обработка 12 мегапиксельного изображения (на моем ПК, он не самый быстрый, но и далеко не самый медленный). Но если открывать одновременно или последовательно 2, 3 картинки или больше? А если компьютер слабый? А если не 12 мегапикселей, а какой-нибудь скан 5000x6000? Будут уже вполне заметные задержки, пользователи программ скорее всего выразят недовольство. Вот и приходится бороться за каждую долю секунды...  С другой стороны, и погружаться глубже в C\C++ не особо хочется
 
DarkDemonДата: Воскресенье, 23.12.2018, 09:50 | Сообщение # 21
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
Цитата WQ ()
С другой стороны, и погружаться глубже в C\C++ не особо хочется


Тогда погружайся в ассемблер. Компиляторы C тоже косячат, об этом говорил автор VirtualDub.
По факту идеальный код пишется только руками и только под целевую платформу, в случае с x86 -
считай что это вообще неопределённость, конвейеры и кеш - везде разные, всё по разному работает,
в итоге имеет смысл делать всё таки какую-то минимальную оптимизацию, но с упором на минимализацию
размера опкодов. Сильнее оптимизировать внутренние циклы, выносить из них во внешние всё,
что только возможно. Компилятор всё что может это подумать, как математически упростить то,
что ты пишешь и развернуть циклы, всё больше он ничего не может.
Вообще любой BASIC прогер как-бы должен понимать, что если идешь на си то лучше уходить
туда полностью с головой, а иначе остаётся только с асмом колбаситься, меня такой подход обычно устраивает.
Бейсик это всегда логика и высокий уровень, такая идеология, отличнейшая идеология.
Нужно быстрее - есть встроенный асм, тоже неплохой.

Цитата haav ()
Я уже неоднократно себя чувствовал хомяком в колесе

Да ладно Стас, какой хомяк, чё бы мы без тебя делали. Я вот опять "олососился", поглядываю на свои
старые исходники и понимаю, что постарел и отупел. Но благо кодобаза какая никакая есть.

Цитата WQ ()
из-за чего приходится перебирать все пиксели, выделять компоненты цвета

Так посмотри выровнены ли у тебя данные по "машинному слову". Как происходит копирование.
Найди бутылочное горлышко. Попробуй разбить на потоки. Если бы у меня такие задачи были,
я бы наверное выкачал какой-нибудь профайлер или замеры в код встроил.
И кстати не ведись на эти "в 3 раза быстрее", про ABC паскаль тоже говорят, что он сортирует быстрее си,
о том какой ценой он это делает умалчивают, я бы ещё дополнительно смотрел на пожирание ЦП ресурсов.
Потому что может такую "скорость" и нафиг...
 
haavДата: Воскресенье, 23.12.2018, 14:20 | Сообщение # 22
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата DarkDemon ()
Да ладно Стас, какой хомяк,


Леха, я имел ввиду то, что память несовершенна, и чем старше становишься, тем больше это понимаешь smile


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
UilДата: Среда, 13.03.2019, 00:49 | Сообщение # 23
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 2
Статус: Offline
Что-то ссылка на скачивание не работает.
 
haavДата: Среда, 13.03.2019, 06:02 | Сообщение # 24
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Обновил ссылку, спасибо за замечание.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: