I have the same problem before. I have 50 buttons on screen. My frame rate was 25-30. And now is 60.
My solution was make a for loop and then align them. Works fine for me.
CCMenu *menuArray = [CCMenu menuWithItems:nil];
[self addChild:menuArray];
for(int x=1; x<=50; x++){
CCMenuItemImage *level = [CCMenuItemImage itemFromNormalImage:@"levels_background..png" selectedImage:@"levels_background_down.png" target:self selector:@selector(level:)];
level.tag = x;
level.position = ccp(level.contentSize.width, level.contentSize.height);
[menuArray addChild:level];
}
[menuArray alignItemsInColumns: [NSNumber numberWithInt:10],
[NSNumber numberWithInt:10], [NSNumber numberWithInt:10],
[NSNumber numberWithInt:10], [NSNumber numberWithInt:10], nil];