python coding contest

Steven D'Aprano steve at REMOVETHIScyber.com.au
Sun Jan 1 10:52:08 EST 2006


On Sun, 01 Jan 2006 15:49:58 +0100, Claudio Grondi wrote:


> What I have thought about as a simpler/better solution is a method 
> allowing to avoid processing the content of the string or long integer 
> object by looping over its content. 

How can you avoid looping over its content? Whether you do it yourself
using "for byte in array" or similar, or Python does it for you
(using array.tostring perhaps), *something* has to walk through the bytes.

If you don't like walking the string, write a function to do it once, and
then use the function.

> I suppose, that knowing enough about 
> Python internals it must be possible to change only the object type not 
> beeing forced to process the content i.e. the value itself, what in case 
> of big size of data to convert with methods like this above wastes CPU 
> time.

I'm reminded of a time I was going for a drive in the country when I drove
past an apple orchid. Standing in the orchid was a farmer with a pig. He
lifted the pig into the air, and the pig then bit an apple and slowly
chewed it. The farmer then carried him over to another branch, and the pig
ate another apple.

I was so surprised I stopped my car and wandered over to ask the farmer
what he was doing.

"I'm feeding apples to my pig," he replied.

"Wouldn't it save time to just pick some apples and feed them to the pig?"

The farmer looked at me like I was an idiot. "What's time to a pig?"


The moral of the story is, before spending time working on some scheme to
save CPU time, you better be absolutely sure that firstly, you are going
to save CPU time, secondly, that it is enough CPU time to be worth saving,
and thirdly, that you aren't wasting more of your own time to do it.



-- 
Steven.




More information about the Python-list mailing list