I had a typo in my example. The return did not call the map2 version. With it, the results were (now on 7.7 and Windows 7)
- pred 58278.25 ms - map 272.68 ms - map2 74.27 ms - map2! 92.97 ms - flowr 43018.3 ms
Hej Arto,
One can even improve your map2 by using the [Simple map operator].
declare function local:difference-map-2-excl($a, $b) { let $m2 := map:new($b ! map:entry(., true())) return $a ! (if($m2(.)) then () else .) };
- map 299.47 ms - map2 290.96 ms - map2 + ! 128.25 ms
.. Arto