[英]Regarding performance issues for usage of memory stream in c#
我創建了一個項目。 很多人一次會使用我的項目。 如果有人出錯,它將通過使用內存流創建對象來寫入文件。 如果每個人都出錯,那么將創建該數量的對象,並且所有對象一次都將錯誤寫入同一文件。 這有什么問題和性能問題嗎?
內存流只是字節數組周圍的Stream接口。
因此,這實際上非常快。
但是整個字節數組都保留在內存中,所以可能由於內存分配過多而導致性能問題。
您是否真的會遇到問題取決於“多人”有多大,以及內存流中的數據量。
如果用“許多人”寫入同一文件,也要注意鎖定問題。
想到文件鎖定/爭用。 您不能創建日志目錄,並讓所有日志寫入都創建自己的文件嗎? 另外,也可以使用.NET跟蹤功能或類似log4net,Common.Logging,dotTrace之類的日志記錄框架來為您消除這些問題。
訪問日志文件時,共享流並在其周圍使用鎖。 請記住在退出時關閉流。
static Object _locker = new Object;
static FileStream fs = new FileStream(...);
// your code
lock(_locker)
{
fs.Write(...) // write to stream
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.