Re: General performance question

The underlying set functions in gtk+ typically test if the value of the property will really change, and they return quickly if it won't. gtk_widget_set_sensitive() does so, and so do most (probably all) functions that set a property. When the value really changes, the call takes much more time, because a notify signal is emitted.

Conclusion: Even if the value won't change, you gain very little, or possibly nothing, by first calling the corresponding get function.
When it comes to the question of good style, I prefer the shorter version with an unconditional call to the set function.

I can't resist the temptation to mention another kind of unnecessary test that I see quite often in C++ code:

MyType* var = 0;
if (...) var = new MyType();
if (var) delete var;

"if (var)" is unnecessary. The delete operator repeats that test. It does nothing when applied to a null pointer.


2013-09-08 12:42, Jonas Platte skrev:
Hello, I've got a simple question: In gtkmm, when I want to set a boolean property of any object, like a widget, and I don't know it's current state, should I first check if the state isn't how I want it to be, or should I always call set? For example, in the case I want a widget to get insensitive, would I write:

    if(widget.get_sensitive()) widget.set_sensitive(false);

or only


And if it doesn't have a significant influence on the performance, which one would you consider the better style?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]