簡體   English   中英

將圖像轉換為 base64 的方法的性能

[英]performance of method to convert image to base64

我使用以下方法將圖像轉換為 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);

對於每個頁面加載,此方法在運行時運行多次。 我擔心對我網站性能的影響。

我知道它會影響性能,但會顯着影響它嗎?

通常,確定性能影響的最佳方法是對其進行測量。 看起來這可能會導致一些 CPU 使用率、memory 開銷和一些磁盤 IO,所以這些是我要注意的問題。 使用負載測試工具模擬真實數量的並發用戶,看看會發生什么。

值得一提的是,如果這些圖像總是相同的,那么您可能可以緩存此方法的 output。

我認為你會在垃圾收集中失去更多的性能。 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);

代碼中性能最“低效”的部分是從文件系統中讀取圖像。

進行 base64 編碼是一種在內存中完成的非常簡單的算法。

這是否真的會影響您網站的性能取決於您網站的容量以及與您網站所做的一切相比的讀取文件和編碼文件的時間量。 最好的辦法是暫時保留代碼並添加一些日志記錄以了解性能影響是什么。

如果您重復讀取相同的文件,您可以添加緩存以將編碼文件緩存到 memory 或將編碼文件緩存到磁盤,具體取決於大小和重復文件訪問的頻率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM