in reply to Re^2: Using the strict module in object oriented programming
in thread Using the strict module in object oriented programming

Admittedly, I haven't looked at this module (or really tied things in general recently), but isn't there always an additional speed hit for using a tied variable?

Yes. And 'use strict' and 'use warnings' also impose penalties -- you have to look at the situation, and see if the penalties from using something are worth its benefits.

Sometimes, it's worth using something in development, and then take it out before it goes into production. Eg, in the examples from the original poster, only constants were used to access the hash, so FixedKeys isn't needed after the program's been written and tested. (if you were using potentially tainted variables as hash keys, you might want to leave it in, but you'd have to look at the costs, benefits and other risk factors for that particular case).

  • Comment on Re^3: Using the strict module in object oriented programming

Replies are listed 'Best First'.
Re^4: Using the strict module in object oriented programming
by diotalevi (Canon) on Jul 25, 2006 at 20:42 UTC

    Comparing compilation of strict.pm and warnings.pm to having to access tied variables is unfair. You are strictly correct that saying use strict; isn't zero cost. The first time that is said anywhere in the program, the strict.pm file has to be loaded and compiled. Then everytime use strict; is said, strict->import; is called once during compilation. Strictly speaking, that's not free. It is, however, as cheap as anything ever gets in perl. It sets two scalar values. That's it. There is no additional runtime overhead. In all terms I've ever come to recognize, strict and warnings are free because any module you load will at some point have loaded it.

    Tied variables incur all the same costs but they also cost an additional function call for every time the variable is accessed. They also cost a little bit when it comes to magic resolution and a little bit more if your ISA cache isn't up to date.

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

    A reply falls below the community's threshold of quality. You may see it by logging in.