FreeBasicBUILD сборка 0.90
|
|
WQ | Дата: Воскресенье, 02.12.2018, 23:19 | Сообщение # 16 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: 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
Статус: Offline
| Ну понятно. dkl решил, что проблемы совместимости не будут всплывать, но время показало, что он ошибся.
Цитата WQ ( ) Ведь раньше в исходный код заглядывал, и не вспомнил
Это нормально Информации много , одна пишется , другая уходит далеко в закрома памяти. И чем старше будешь становиться , тем больше будешь на одном месте по нескольку раз топтаться. Я уже неоднократно себя чувствовал хомяком в колесе
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Четверг, 13.12.2018, 14:57 | Сообщение # 18 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: 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
Статус: Offline
| Цитата WQ ( ) Также получилось, что работа с пикселями в C примерно в 3 раза быстрее, чем в freebasic
Ну это ты че то не так сделал. Я верю, что компилятор GNU C++ создает более шустрый код, но не в три же раза.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Четверг, 13.12.2018, 23:17 | Сообщение # 20 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: 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
Статус: Offline
| Цитата WQ ( ) С другой стороны, и погружаться глубже в C\C++ не особо хочется
Тогда погружайся в ассемблер. Компиляторы C тоже косячат, об этом говорил автор VirtualDub. По факту идеальный код пишется только руками и только под целевую платформу, в случае с x86 - считай что это вообще неопределённость, конвейеры и кеш - везде разные, всё по разному работает, в итоге имеет смысл делать всё таки какую-то минимальную оптимизацию, но с упором на минимализацию размера опкодов. Сильнее оптимизировать внутренние циклы, выносить из них во внешние всё, что только возможно. Компилятор всё что может это подумать, как математически упростить то, что ты пишешь и развернуть циклы, всё больше он ничего не может. Вообще любой BASIC прогер как-бы должен понимать, что если идешь на си то лучше уходить туда полностью с головой, а иначе остаётся только с асмом колбаситься, меня такой подход обычно устраивает. Бейсик это всегда логика и высокий уровень, такая идеология, отличнейшая идеология. Нужно быстрее - есть встроенный асм, тоже неплохой.
Цитата haav ( ) Я уже неоднократно себя чувствовал хомяком в колесе Да ладно Стас, какой хомяк, чё бы мы без тебя делали. Я вот опять "олососился", поглядываю на свои старые исходники и понимаю, что постарел и отупел. Но благо кодобаза какая никакая есть.
Цитата WQ ( ) из-за чего приходится перебирать все пиксели, выделять компоненты цвета Так посмотри выровнены ли у тебя данные по "машинному слову". Как происходит копирование. Найди бутылочное горлышко. Попробуй разбить на потоки. Если бы у меня такие задачи были, я бы наверное выкачал какой-нибудь профайлер или замеры в код встроил. И кстати не ведись на эти "в 3 раза быстрее", про ABC паскаль тоже говорят, что он сортирует быстрее си, о том какой ценой он это делает умалчивают, я бы ещё дополнительно смотрел на пожирание ЦП ресурсов. Потому что может такую "скорость" и нафиг...
|
|
| |
haav | Дата: Воскресенье, 23.12.2018, 14:20 | Сообщение # 22 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата DarkDemon ( ) Да ладно Стас, какой хомяк,
Леха, я имел ввиду то, что память несовершенна, и чем старше становишься, тем больше это понимаешь
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Uil | Дата: Среда, 13.03.2019, 00:49 | Сообщение # 23 |
Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Что-то ссылка на скачивание не работает.
|
|
| |
haav | Дата: Среда, 13.03.2019, 06:02 | Сообщение # 24 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Обновил ссылку, спасибо за замечание.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
|