module Futhark.Profile.EventSummary (EvSummary (..), eventSummaries) where import Data.Map qualified as M (Map, fromListWith) import Data.Text qualified as T (Text) import Futhark.Profile (ProfilingEvent (ProfilingEvent)) data EvSummary = EvSummary { EvSummary -> Integer evCount :: Integer, EvSummary -> Double evSum :: Double, EvSummary -> Double evMin :: Double, EvSummary -> Double evMax :: Double } deriving (Int -> EvSummary -> ShowS [EvSummary] -> ShowS EvSummary -> String (Int -> EvSummary -> ShowS) -> (EvSummary -> String) -> ([EvSummary] -> ShowS) -> Show EvSummary forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> EvSummary -> ShowS showsPrec :: Int -> EvSummary -> ShowS $cshow :: EvSummary -> String show :: EvSummary -> String $cshowList :: [EvSummary] -> ShowS showList :: [EvSummary] -> ShowS Show) eventSummaries :: [ProfilingEvent] -> M.Map (T.Text, T.Text) EvSummary eventSummaries :: [ProfilingEvent] -> Map (Text, Text) EvSummary eventSummaries = (EvSummary -> EvSummary -> EvSummary) -> [((Text, Text), EvSummary)] -> Map (Text, Text) EvSummary forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a M.fromListWith EvSummary -> EvSummary -> EvSummary comb ([((Text, Text), EvSummary)] -> Map (Text, Text) EvSummary) -> ([ProfilingEvent] -> [((Text, Text), EvSummary)]) -> [ProfilingEvent] -> Map (Text, Text) EvSummary forall b c a. (b -> c) -> (a -> b) -> a -> c . (ProfilingEvent -> ((Text, Text), EvSummary)) -> [ProfilingEvent] -> [((Text, Text), EvSummary)] forall a b. (a -> b) -> [a] -> [b] map ProfilingEvent -> ((Text, Text), EvSummary) pair where pair :: ProfilingEvent -> ((Text, Text), EvSummary) pair (ProfilingEvent Text name Double dur Text provenance Value _details) = ((Text name, Text provenance), Integer -> Double -> Double -> Double -> EvSummary EvSummary Integer 1 Double dur Double dur Double dur) comb :: EvSummary -> EvSummary -> EvSummary comb (EvSummary Integer xn Double xdur Double xmin Double xmax) (EvSummary Integer yn Double ydur Double ymin Double ymax) = Integer -> Double -> Double -> Double -> EvSummary EvSummary (Integer xn Integer -> Integer -> Integer forall a. Num a => a -> a -> a + Integer yn) (Double xdur Double -> Double -> Double forall a. Num a => a -> a -> a + Double ydur) (Double -> Double -> Double forall a. Ord a => a -> a -> a min Double xmin Double ymin) (Double -> Double -> Double forall a. Ord a => a -> a -> a max Double xmax Double ymax)