Proactive Approach 06: Profiling



R.P. Churchill, CBAP, PMP, CSPO, CSM, A-CSD

Proactive Approach 06: Profiling


The Basics

This involves identifying where large amounts of resources are being devoted, and seeing if ways can be found to reduce the use of those resources.

I first encountered the idea as it applied to running computer code. Profilers would identify what sections of code were executed most often (or analyze usage of resources like memory), so effort could preferentially be directed to making those more efficient.

This concept can be applied in many different ways and to any kind of resource.


Proactive Approach 06: Profiling

Examples

Extreme loop unrolling is an example of making sections of code more efficient in terms of speed, in a trade-off with code size and memory and storage use. I once designed a system that needed to solve a 21x8 matrix repeatedly, and I mean this operation took up 95% of the total running time repeatedly. The solution function involved barely twenty lines of code in several, tightly nested loops. Every time a line of code runs, it has to perform multiple additions and multiplications to calculate the memory locations of all the involved variables in memory. In extreme loop unrolling, you run the code and then write out each line will all loop indices and relative memory locations precalculated. The function ran thirty percent faster, but required over ten thousand lines of code to express. (See story 2 here.)

I know one individual who noticed that stainless steel was one of the major costs in his products, so he asked around and found that he could use a different grade of stainless steel that was cheaper than the industry standard, but performed just as well. He therefore saved his company — and his customers — a lot of money and stayed ahead of his competitors.

Most efforts that try to reduce labor costs operate on the same principle.

Proactive Approach 06: Profiling

Next: Proactive Approach 07: Simplification

Prev: Proactive Approach 05: Lean and Six Sigma

Introduction

    

Reactive Drivers

    

Proactive Approaches

    

Considerations