F# 什么';csv类型提供程序中缓存的使用是什么?
我对F# 什么';csv类型提供程序中缓存的使用是什么?,f#,type-providers,F#,Type Providers,我对缓存和缓存行有点困惑 似乎MyCsvType.Load(path).Take(30000).Cache()实际上并没有立即读取30000行。(与序列缓存不同) 那么,既然我们已经有了CacheRows 此外,如果我只对前30000行感兴趣,我应该使用MyCsvType.Load(path).Take(30000)还是MyCsvType.Load(path).rows |>Seq.Take 30000如果查看F#数据源代码,可以看到缓存,Take和其他操作员正在调用相应的Seq.xyz操作(这
缓存
和缓存行
有点困惑
似乎MyCsvType.Load(path).Take(30000).Cache()实际上并没有立即读取30000行。(与序列缓存不同
)
那么,既然我们已经有了CacheRows
此外,如果我只对前30000行感兴趣,我应该使用MyCsvType.Load(path).Take(30000)
还是MyCsvType.Load(path).rows |>Seq.Take 30000
如果查看F#数据源代码,可以看到缓存
,Take
和其他操作员正在调用相应的Seq.xyz
操作(这是)
关键的区别在于,当您创建一个类型提供程序而不指定CacheRows=false
时,默认情况下它实际上会调用Cache
。因此,诀窍是使用CacheRows=false
创建一个类型提供程序,然后可以交替使用Seq.cache
或cache
方法(以及其他操作)
let stocks = CsvProvider<"sample.csv", CacheRows=false>.GetSample()
stocks.Take(10).Cache() // Using methods is now exactly
stocks |> Seq.take 10 |> Seq.cache // the same as using functions
let stocks=CsvProvider.GetSample()
stocks.Take(10).Cache()//使用方法现在正是
stocks |>Seq.take 10 |>Seq.cache//与使用函数相同