http://www.perlmonks.org?node_id=270413


in reply to Re: Alpha base-26 to base-10...
in thread Alpha base-26 to base-10...

John~

I am surprised that no one else has mentioned this (because some have done it in their code), but this is the sort of situation where you want to avoid using exponentiation (be it pow or **). You should notice that the correct power can be built up by repeatedly multiplying by 26 during each pass through the loop. Making your code into:
# Convert base26 column string to number # All your Base are belong to us. my @chars = split //, $col; my $expn = 1; $col = 0; while (@chars) { my $char = pop(@chars); # LS char first $col += (ord($char) -ord('A') +1) * $expn; $expn *= 26; }

While a really good optimizer *might* do this for you, I doubt that many do, and I am relatively certain that Perl won't since it is so heavily introspective. This is the sort of optimization I always keep my eyes out for cause it can save a lot of work.

Boots
---
Computer science is merely the post-Turing decline of formal systems theory.
--???