From 32d17fc1c4ca4856ef27baa793ff5d21d9b13f16 Mon Sep 17 00:00:00 2001 From: Lev Gorodinski Date: Fri, 14 Jul 2017 13:46:31 -0400 Subject: [PATCH] unroll producer result decode loop --- src/kafunk/Producer.fs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/kafunk/Producer.fs b/src/kafunk/Producer.fs index ece4274..fa386f0 100644 --- a/src/kafunk/Producer.fs +++ b/src/kafunk/Producer.fs @@ -367,15 +367,14 @@ module Producer = |> Option.iter (fun res -> IVar.tryPut res b.rep |> ignore) if oks.Length > 0 then - let oks = - oks - |> Seq.map (fun (p,o) -> - let pmc = ps.[p].Count - p, Success (ProducerResult(p,o,pmc))) - |> Dict.ofSeq + let oks' = Dict.empty + for i = 0 to oks.Length - 1 do + let p,o = oks.[i] in + let pmc = ps.[p].Count in + oks'.[p] <- Success (ProducerResult(p,o,pmc)) for b in batch do let mutable res = Unchecked.defaultof<_> - if (oks.TryGetValue(b.partition, &res)) then + if (oks'.TryGetValue(b.partition, &res)) then IVar.tryPut res b.rep |> ignore | Failure errs ->