By getting and setting as many properties as possible with the least number of calls, remote activity is curtailed and the overhead involved with each property is reduced. Although service providers try to collect properties before making a remote procedure call for retrieval or modification, you can optimize this effort by requesting multiple properties to begin with.
For example, if you work with routing lists that describe future recipients with named properties belonging to particular property sets, process all of the recipients with two calls, one to IMAPIProp::GetIDsFromNames to retrieve the identifiers for all of the recipient properties and the other to IMAPIProp::GetProps to retrieve all of the values. The alternative, making a call to GetIDsFromNames followed by a call to GetProps for each recipient, is much less efficient.