我有一個簡單的類像下面這樣:匹配的文件路徑字符串的第一部分
class Record
{
public Record(string fp1, string fp2, string fp3)
{
Filepath1 = fp1;
Filepath2 = fp2;
Filepath3 = fp3;
}
public string Filepath1 { get; private set; }
public string Filepath2 { get; private set; }
public string Filepath3 { get; private set; }
}
每個文件路徑將是非常相似的(並且很長),並只向的最後幾個字符不同文件路徑。
現在,我想有這些記錄的幾千在內存中,我想這些記錄使用最多的RAM量較小。所以,我試圖想辦法來優化內存使用情況,這裏是我想出了一個解決辦法:
class Record
{
private string _baseFilepath;
private string _fp1;
private string _fp2;
private string _fp3;
public Record(string fp1, string fp2, string fp3)
{
_baseFilepath = /*get common first part of filepaths*/;
_fp1 = /*last part of fp1*/;
_fp2 = /*last part of fp2*/;
_fp3 = /*last part of fp3*/;
}
public string Filepath1
{
get { return _baseFilepath + _fp1; }
}
public string Filepath2
{
get { return _baseFilepath + _fp2; }
}
public string Filepath3
{
get { return _baseFilepath + _fp3; }
}
}
你可以看到,我可以節省大量的內存,特別是很長的文件路徑只有在最後幾個字符是不同的。問題是,是否有一種簡單的方法來獲得文件路徑的第一部分?
編輯: ,可能有多達70萬條記錄在內存中,實際生產類有幾個文件路徑。我試圖讓應用盡可能輕量化,同時爲了簡單起見,儘量保持優化非常簡單。
萬條記錄將佔用一兆字節左右。您是否在嚴格受限的硬件上運行? – 2011-05-03 22:24:12
它實際上取決於。這是針對服務器應用程序的,每個連接到服務器的用戶都可能導致4000條記錄在內存中。 – Phil 2011-05-03 22:30:22
哦,這不是我的製作課,只是一個例子。在現實生活中將會有更多的文件路徑。 – Phil 2011-05-03 22:32:29