As should become clear when you use profiling it's used to see how fast aspects of the page are.
Put this line in the main controller near the start (eg in the constructor right after you call the parent's constructor:
$this->output->enable_profiler(TRUE);
This will print a lot of profiling information at the bottom of your resulting page. This will include all the database queries, how long the take and how long was spent in the controllers (PHP time as opposed to database query time).
If something is slow start by enabling the profiler and checking if it's the controller or the queries (or both). If it's the database queries, then you need to improve them and that's a whole topic in itself. If it's the controllers then you need to find out what code specifically is causing the slowdown.
Have a read of http://codeigniter.com/user_guide/libraries/benchmark.html and start placing
the benchmarking start and stop tags where you think it's likely to cause slow speeds, loops and any recursive functions are the first places you should check. Once you find a slow segment of code you need to find how to optmise it, which again is a whole can of worms on its own.
It is possible that slow speeds are due to bad hardware, a busy server, a slow connection or a ton of other issues, those are outside the scope of this question though.
Edit:
Just want to add that you don't use CI's profiler or benchmarking functionality to improve the speed, only to find where the speed needs to be improved. I know it's a minor thing, but just thought I should point it out.