improve CPString sizeOfString performance by caching the calculated result

This commit is contained in:
Klaas Pieter Annema
2010-10-21 17:36:09 +02:00
parent c9a4821d15
commit afcce49455
+12 -1
View File
@@ -24,6 +24,7 @@
@import "CPPlatformString.j"
var CPStringSizeWithFontInWidthCache = {};
@implementation CPString (CPStringDrawing)
@@ -50,7 +51,17 @@
- (CGSize)sizeWithFont:(CPFont)aFont inWidth:(float)aWidth
{
return [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth];
var cacheKey = self + [aFont cssString] + aWidth;
size = CPStringSizeWithFontInWidthCache[cacheKey];
if (size === undefined)
{
size = [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth];
CPStringSizeWithFontInWidthCache[cacheKey] = size;
}
return size;
}
@end