gpt4 book ai didi

c# - 最佳输出字典

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:19 25 4
gpt4 key购买 nike

我有 4 个字典,包含 800k 个字符串,长度为 200 到 6000 个字符。当我将它加载到内存中时,它占用了大约 11 GB 的内存。解析数据需要 2 分钟,输出数据需要 2 分钟。有没有比我在下面使用的更快地输出数据?我每秒只能获得 20-31 MB 的磁盘 IO,而且我知道硬盘可以达到 800ish

var hash1 = new Dictionary<int, Dictionary<string, string>>(f.Count + 2);
var hash2 = new Dictionary<int, Dictionary<string, string>>(f.Count + 2);
var hash3 = new Dictionary<int, Dictionary<string, string>>(f.Count + 2);
var hash4 = new Dictionary<int, Dictionary<string, string>>(f.Count + 2);
....
foreach (var me in mswithfilenames)
{
filename = me.Key.ToString();
string filenamef = filename + "index1";
string filenameq = filename + "index2";
string filenamefq = filename + "index3";
string filenameqq = filename + "index4";

StreamWriter sw = File.AppendText(filenamef);
StreamWriter sw2 = File.AppendText(filenameq);
StreamWriter swq = File.AppendText(filenamefq);
StreamWriter sw2q = File.AppendText(filenameqq);

for (i = 0; i <= totalinhash; i++)
{
if (hashs1[i].ContainsKey(filenamef))
{
sw.Write(hashs1[i][filenamef]);
}
if (hashs2[i].ContainsKey(filenameq))
{
sw2.Write(hashs2[i][filenameq]);
}
if (hashs3[i].ContainsKey(filenamefastaq))
{
swq.Write(hash4[i][filenamefastaq]);
}

if (hash4[i].ContainsKey(filenameqq))
{
sw2q.Write(hash4[i][filenameqq]);
}
}

sw.Close();
sw2.Close();
sw3.Close();
sw4.Close();
swq.Close();
sw2q.Close();
}

最佳答案

你测量过什么吗?听起来您要读取和写入的数据量并不小——因此第一步是为您的磁盘子系统建立绝对基线,以了解它读取/写入大量数据的速度。简单地读取文件,然后写入您期望的大约数据量的新文件,将显示您可以在多大程度上优化它。

您可能会觉得您的代码本身在读/写上没有花费太多时间。

关于c# - 最佳输出字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com