Advanced products for the home, entertainment, automotive and health industries need to perform sophisticated computations on resource-constrained and heterogeneous embedded systems. Such computations can often be optimised by orders-of-magnitude without affecting user-observable functionality (e.g. by trading off accuracy vs speed). Unfortunately, the programming complexity and poor understanding of trade-offs, combined with the cost and time-to-market pressures, leads to few design and optimisation choices being explored. This often results in over-provisioned (expensive) and under-performing (uncompetitive) products.We help our customers increase the efficiency and reduce the cost of computing in their products to meet the product requirements and reduce the business risks. Through state-of-the-art performance analysis and optimisation techniques based on robust methodology and systematic experimentation, we simultaneously optimise execution time, power consumption, size, reliability, programmability and other important metrics of computer systems.