Of course everything has a cost, but does an extra function call count that much in a GUI? The more intensive parts (gui update, draw, ...) are still doing the work in the C layer. What you do through the C++ layer is basically the setup of the gui, and receiving events. These don't happen often. I always say that first keep the project clean and easy to maintain by keeping software design nice and clean, this can not be accomplished without object oriented design in a huge codebase (lets say few hundred thousads LOC). After this if you have performance issues lets start profiling and spot out the most critical parts and start fixing those until you get reasonably good performance. Optimization sometimes results in hard to understand code, if you write the whole code focusing on optimization then your whole code becomes a mess, and often the result is bad performance!!! surprise!!! The 2 most common reasons of performance issues are: algorhitmic problems, hardware related issues (often cache misses). The latter can be caused by a lot of other things: order of execution of subsystems, bad multithreading, ... Of course if you have a very low end hardware you might want to save every piece of cycle, but even in that case I would consider whether it worth sacrificing good software design for a small performance impact... Not to mention that some good compilers can optimize out (inline) such small wrapper function calls (link time code generation in VC++). The long and short of it is: make smart design decisions and dont overoptimize at the beginning if you dont have a good reason to do so. Performance problems come last usually from unexpected spots of your codebase.