use profiling to verify where runtime is spent