@dropchief да все получилось, спасибо большое за помощь!
Как увеличить скорость преобразования png в base64
-
Всем доброго времени суток, вот столкнулся с лимитами... Суть проблемы, достаем из файла картинки png формата и конвертируем в base64, примерно по времени 3,5 минуты получается преобразовать 6000 картинок, весом в 15 кб. Подскажите, как можно уменьшить время? Пробовал асинхронную загрузку... Не помогло... Время стало еще больше, чем обработка в 1 потоке...
-
@Игорь777 said in Как увеличить скорость преобразования png в base64:
Всем доброго времени суток, вот столкнулся с лимитами... Суть проблемы, достаем из файла картинки png формата и конвертируем в base64, примерно по времени 3,5 минуты получается преобразовать 6000 картинок, весом в 15 кб. Подскажите, как можно уменьшить время? Пробовал асинхронную загрузку... Не помогло... Время стало еще больше, чем обработка в 1 потоке...
Для начала опишите, как именно вы преобразовываете изображение в base64 и для чего? Сам файл можно сразу прочитать в base64 или отправить файл можно без предварительного чтения в base64 просто прикрепив файл к запросу
-
- Вариант:
а) Получаю информацию о файлах и сохраняю путь в переменную.
б) Далее произвожу поиск файлов png в папке и получаю список с адресами картинок в папке.
в) Затем устанавливаю цикл "FORECH", в котором читаю каждый файл по порядку и сохраняя в base64 формата в переменную.
г) Затем значение переменной сохраняю в список.
При таком формате, на 6000 картинок, каждая из них весит от 12 до 16 кб уходило в районе 14 минут... Если без пункта "г" то скрипт выполнялся за 3.5 минуты...
Пробовал вместо цикла FORECH делать функцию, а вместо списка делал ресурс - результат еще хуже, видать каждый раз вызывать функцию.. тоже тратиться не мало времени.
Но проблему я решил, вспомнил где-то на форуме кто-то говорил, если заранее известно сколько нужно повторять цикл, то лучше использовать FOR. Попробовал я FOR, результат - 11 сек, если без пункта "г", то 3 сек!) Я даже обалдел. Такая колоссальная разница между этими 2-мя циклами... Спасибо всем, кто отозвались и хотели помочь)
- Вариант:
-
@Игорь777 said in Как увеличить скорость преобразования png в base64:
- Вариант:
а) Получаю информацию о файлах и сохраняю путь в переменную.
б) Далее произвожу поиск файлов png в папке и получаю список с адресами картинок в папке.
в) Затем устанавливаю цикл "FORECH", в котором читаю каждый файл по порядку и сохраняя в base64 формата в переменную.
г) Затем значение переменной сохраняю в список.
При таком формате, на 6000 картинок, каждая из них весит от 12 до 16 кб уходило в районе 14 минут... Если без пункта "г" то скрипт выполнялся за 3.5 минуты...
Пробовал вместо цикла FORECH делать функцию, а вместо списка делал ресурс - результат еще хуже, видать каждый раз вызывать функцию.. тоже тратиться не мало времени.
Но проблему я решил, вспомнил где-то на форуме кто-то говорил, если заранее известно сколько нужно повторять цикл, то лучше использовать FOR. Попробовал я FOR, результат - 11 сек, если без пункта "г", то 3 сек!) Я даже обалдел. Такая колоссальная разница между этими 2-мя циклами... Спасибо всем, кто отозвались и хотели помочь)
Вы написали то КАК вы решаете свою задачу, но не описали какую именно задачу вы решаете этим способом
- Вариант:
-
@Fox В конечном счете, я произвожу операцию поиска одного изображения в другом.... И при совпадении сохраняю координаты, но самое печальное... Что во время этой операции... BAS в прямом смысле висит, ни лог не посмотреть ничего не сделать... Может и выкинуть...
-
@Игорь777 said in Как увеличить скорость преобразования png в base64:
@Fox В конечном счете, я произвожу операцию поиска одного изображения в другом.... И при совпадении сохраняю координаты, но самое печальное... Что во время этой операции... BAS в прямом смысле висит, ни лог не посмотреть ничего не сделать... Может и выкинуть...
Добавьте секундную задержку в цикл, если это сильно замедлит процесс, можете создать условие, что бы сон выполнялся скажем каждые 10 итераций или 100
-
@Игорь777 said in Как увеличить скорость преобразования png в base64:
@Fox Так я пробовал всего 5 картинок сравнивать... В конце цикл почему-то ломается... хоть 500, разницы нет...
Без примера скрипта не скажу точно, но зависание интерфейса BAS происходят при бесконечных или очень больших циклах без задержки.
По поводу сравнения, вы можете прочитать один раз все изображения и внести их в базу данных, работа с базой будет быстрее, чем с файлами. Если изображения без шума (то есть одинаковые) то можно вообще хешировать изображение и сравнивать уже хеши, это будет происходить мгновенно