C# 成品率-返回内存优化

C# 成品率-返回内存优化,c#,memory,memory-management,iterator,yield-return,C#,Memory,Memory Management,Iterator,Yield Return,还有一个关于收益率的问题 所以我需要远程执行不同的SQL脚本。脚本在TFS中,因此我会自动从TFS中获取它们,该过程会遍历所有文件,读取它们在内存中的内容,并将内容发送到远程SQL服务器 到目前为止,这一过程运作完美。但是现在一些脚本将包含批量插入将脚本大小增加到500000 MB或更大 所以我构建了代码“认为”我曾经在内存中读取过文件的内容,但现在我有了第二个想法 这就是我所说的(过于简化): public IEnumerable Find(字符串scriptsPath) { 如果(!Dire

还有一个关于收益率的问题

所以我需要远程执行不同的SQL脚本。脚本在TFS中,因此我会自动从TFS中获取它们,该过程会遍历所有文件,读取它们在内存中的内容,并将内容发送到远程SQL服务器

到目前为止,这一过程运作完美。但是现在一些脚本将包含
批量插入
将脚本大小增加到500000 MB或更大

所以我构建了代码“认为”我曾经在内存中读取过文件的内容,但现在我有了第二个想法

这就是我所说的(过于简化):

public IEnumerable Find(字符串scriptsPath)
{
如果(!Directory.Exists(scriptsPath))
{
抛出新的DirectoryNotFoundException(scriptsPath);
}
var path=新目录信息(scriptsPath);
返回路径.EnumerateFiles(“*.sql”,SearchOption.TopDirectoryOnly)
.选择(x=>
{
var script=new SqlScriptSummary
{
Name=x.Name,
FullName=x.FullName,
Content=File.ReadAllText(x.FullName,Encoding.Default)
};
返回脚本;
});
}
....
public void ExecuteScripts(字符串scriptsPath)
{
foreach(Find中的var脚本(scriptsPath))
{
_scriptRunner.Run(script.Content);
}
}
我的理解是
枚举文件
一次返回每个文件
,因此这让我“认为”我在内存中一次加载一个文件

但是 在迭代它们之后,在
executeDescripts
方法中,在
foreach
循环中使用的