Collection squared but what about fractions.

John M McIntosh johnmci at smalltalkconsulting.com
Mon Jun 4 22:35:33 UTC 2001


I couldn't help but noticing that most methods in the math function 
category of Collection follow the form

foo
	^ self collect: [:each | each foo]


yet
squared
	^ self collect: [:each | each * each]

Ah,is this an issue? Well each * each is the math for squared, but 
are there special cases?

Yes Fraction has a special case of squared.
So if I change Collection>>squared to

	^self collect: [:each | each squared]

Then squaring a collection of fractions now takes 62% of the original 
time, because Fraction>>squared is much faster than Fraction>>* 
(140ms)

  But on the other hand array of numbers foo squared runs 20% slower 
(36ms) because we have another method call to make to get to the 
point of each * each.

So thoughts are welcome. I didn't really see any collections being 
squared in the image so I'm not sure of the impact.

-- 
--
===========================================================================
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
===========================================================================





More information about the Squeak-dev mailing list