The primary solution to speeding SSRS reports, irrespective of the database, and as a business analyst in a large hierarchy, is to cache the reports. If one does this intelligently (either my preloading the cache at 7:30 am for instance) or caches the reports on-hit for 45 minutes, one will find massive gains in load speed.
Caching in SSRS
http://msdn.microsoft.com/en-us/library/ms155927.aspx
Pre-loading the Cache
http://msdn.microsoft.com/en-us/library/ms155876.aspx
From your question, you have caching on hit, if you do not like initial reports taking this long, and the data is relatively static over the day, you may increase the cache life-span.
Finally, you may also opt for business managers to instead receive these reports via email subscriptions, which will send them a point in time Excel report which they may find easier and more systematic.
If all of those fail, consider parameter sniffing, i.e.
If this is your original query
CREATE PROCEDURE [SP_Test_ParameterSniffing]
@CustomerID INT
AS
BEGIN
SELECT *
FROM Customer c
WHERE c.CustomerID = @CustomerID
END
All you need to do is to add a new parameter to your SP code and assign the value passed to the SP to theis new parameter and use it in your WHERE clause:
CREATE PROCEDURE [SP_Test_ParameterSniffing]
@CustomerID INT
AS
BEGIN
DECLARE @CustomerID2 INT;
SET @CustomerID2 = @CustomerID;
SELECT *
FROM Customer c
WHERE c.CustomerID = @CustomerID2
END