performance bottleneck analysis