我正在开发一个C#库,它通过网络递归枚举远程共享的子文件夹。这是一项昂贵的操作,可能需要遍历数千个文件夹。为客户端执行此工作的方法返回IEnumerable<string>
,并使用延迟评估(通常是IEnumerable<T>
的情况,因此调用本身返回非常快,但是当客户端执行时对返回值进行foreach
循环或Take()
调用,事情变得非常缓慢。
我正在寻找提高速度的方法。一些想法包括:
List<string>
中,例如,在将其返回给客户端之前,避免延迟枚举。这会使方法调用慢得多,但迭代速度要快得多。IEnumerable<T>
。我已经没有想法了。您建议采用什么方法来快速完成这项工作?谢谢。
答案 0 :(得分:1)
这是客户端 - 服务器通信的问题。
使用{{1}}作为接口很好。
选项#2是性能最高的通用解决方案。如果远程文件夹不经常更改,请考虑在查询结果上实现缓存。