Performance modeling of design patterns for distributed computation