Tuesday, June 28, 2011

Parallel Data Fetching by F#



namespace JQD.Parallel
open System
open System.Collections.Generic
type DataFetcher() =
let f (hhr) =Reporting.HoldingMapper.MapHolding(hhr)
let f2 (ar:Reporting.Domain.Objects.GetHoldingsHierarchyResult[]) =
ar|> Array.Parallel.map (fun (g) -> Reporting.HoldingMapper.MapHolding(g))
|> Array.Parallel.map (fun h -> h.MarketValue )
|> Array.sum

member this.DA(ar:Reporting.Domain.Objects.GetHoldingsHierarchyResult[]) =
ar|> Array.Parallel.map (fun (g) -> Reporting.HoldingMapper.MapHolding(g))
|> Array.Parallel.map (fun h -> h.MarketValue )
|> Array.sum

member this.DA3(ar:DateTime[],groupId:int) =
ar|> Array.Parallel.map( fun i -> Seq.toArray(Reporting.Dal.GetHoldingsHierarchy(groupId,i,i)))
|> Array.Parallel.map(fun g -> f2(g))

No comments: