производительность метода для преобразования изображения в base64 - PullRequest
1 голос
/ 18 июля 2011

Я использую следующий метод для преобразования изображения в строку base64:

FileStream fs = new FileStream(imagePath, FileMode.Open,FileAccess.Read);
byte[] filebytes = new byte[fs.Length];
fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
return Convert.ToBase64String(filebytes, Base64FormattingOptions.InsertLineBreaks);

Этот метод запускается во время выполнения несколько раз для каждой загрузки страницы.Я обеспокоен влиянием на производительность моего сайта.

Я знаю, что это повлияет на производительность, но значительно ли это повлияет на нее?

Ответы [ 4 ]

5 голосов
/ 18 июля 2011

В общем, лучший способ определить влияние на производительность - это измерить его.Похоже, что это может привести к некоторой загрузке ЦП, перегрузке памяти и некоторому дисковому вводу-выводу, так что это те области, которые я бы наблюдал за проблемами.Используйте инструмент нагрузочного тестирования, чтобы смоделировать реалистичное количество одновременных пользователей, и посмотрите, что произойдет.

Для чего стоит, если эти изображения всегда одни и те же, то вы, вероятно, можете кэшировать выходные данные этого метода..

2 голосов
/ 18 июля 2011

Я думаю, вы потеряете больше производительности при сборке мусора. IDisposable наш друг.

byte[] filebytes;
using(FileStream fs = new FileStream(imagePath, FileMode.Open,FileAccess.Read))
{
    byte[] filebytes = new byte[fs.Length];
    fs.Read(filebytes, 0, (int)fs.Length);
}
return Convert.ToBase64String(filebytes, Base64FormattingOptions.InsertLineBreaks);
0 голосов
/ 18 июля 2011

Влияет ли это на производительность вашего сайта или нет, зависит от объема вашего сайта и времени чтения и кодирования файлов по сравнению со всем остальным, что делает ваш сайт.Лучшее, что можно сделать, - это оставить код таким, какой он есть, и добавить некоторые записи, чтобы узнать, как влияет производительность.

Если вы неоднократно читали одни и те же файлы, вы можете добавить кеш в любой закодированныйфайлы в память или закодированные файлы на диск, в зависимости от размера и частоты повторного обращения к файлу.

0 голосов
/ 18 июля 2011

Самая производительная «неэффективная» часть вашего кода - это чтение изображений из файловой системы.

Выполнение кодирования base64 - это очень простой алгоритм, который выполняется в памяти.

...