add performance profiling