Ale*_*der 2 f# data-structures
我正在尝试编写一个小的F#线性代数库(对于具有小矩阵的应用程序,因此内存不是问题),我想知道哪个数据结构在元素查找时间方面具有最佳性能特征,因为我那需要定义矩阵运算吗?
我有点不清楚被问到了什么.
数组当然是O(1),所以我希望它们是正确的答案.(Brian的经验法则:如果你想要快速的东西,那么每种语言的答案都是一样的 - 使用一组结构.)
如果你需要更稀疏的东西,那就是.NET Dictionary和HashSet类(使用哈希),以及F#Map和Set类型(使用树/比较). Dictionary可能是下一个最好的尝试.
但是我当然希望这要么取决于细节(密度,地点/访问模式......),要么根本不重要(其他因素压倒它).
在一天结束时,就像每个表现问题一样:衡量.
如果"小"是2维或3维,那么结构.对于略大的"小",请使用具有显式组件的引用类型.如果元素的数量超过大约30,那么使用单个数组并i + n*j自己做.避免使用.NET的2D数组,因为它们比必要的慢几倍.真的避免使用F#的Matrix类型进行元素操作,因为它会像动态调度一样疯狂(速度慢一个数量级).数组的数组很好,但索引自己允许对索引进行更多的JIT优化.
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |