В этом архиве - переработанные функции Base64 и демонстрация быстродействия. Тест выполняется до 3-х минут.
Разница в скорости - не в десятки процентов, не в пару раз, а в 60 ТЫСЯЧ раз! Так писать код надо уметь.
Там же есть функция Base64_CodeNew - пример как нужно было реализовать эту функцию изначально.
Результаты тестов на слабом компьютере:
Оригинальная Base64_Code:
- объём задачи: 0.5 Мб
- время выполнения: 91.313 с
- примерная скорость: 0.00547 МБ/с
Усовершенствованная Base64_Code:
- объём задачи: 2000 Мб
- время выполнения: 25.219 с
- примерная скорость: 79.305 МБ/с
Новая StrToBase64:
- объём задачи: 2000 Мб
- время выполнения: 5.734 с
- примерная скорость: 348.796 МБ/с
Новая Base64ToStr:
- объём задачи: 2000 Мб
- время выполнения: 7.453 с
- примерная скорость: 268.348 МБ/с
Если никаких возражений не будет - там же в архиве поправленный компонент Charset:
- модифицированы функции преобразования строк
- добавлены функции работы с произвольным буфером, а не только строками
- добавлено событие onError (скрытая) - при декодировании Base64 выдаёт ошибку, если во входной строке обнаружены недопустимые символы или неправильная длина строки. В старом компоненте такие строки обрабатывались по-тихому, что не позволяло автору схемы быстро понять, что он подал на компонент неправильные данные. Можно и в остальные методы добавить контроль ошибок.