For best performance, you should NOT use the execute method for default actions like retrieve create, update et cetera. Therefor you should use the specific functions, which are also provided from the CrmService.
Fast:
BusinessCollection taskCollection = crmservice.retrieveMultiple(queryExpr);
Slow:
RetrieveMultipleResponse retrMultiResponse = (RetrieveMultipleResponse) crmservice.execute(retrMultiRequest);
For specials like opening activities, you must use the execute method.
Alongside you should only call the service, if there is no other option. If you have to calculate huge amounts of crm data, create caching objects to avoid more than one call for the same set of data.
Kind regards
MK
Edit:
Only available if you are using the WSDL-Proxy Classes.