I'm using using entity reference, field collection , and field collection table modules on a site that features "courses" and "lessons" as content types. A field collection with unlimited values is embedded in the course content type, and it contains two fields: a text field for "section" and an entity reference field for "lesson". This allows the same lessons to be reused in different courses, while appearing under a different section. (see screen for reference).
This works pretty well, but performance when editing course nodes starts to degrade significantly after about 30 lessons are added to a course. At 100 lessons, it takes about 15 seconds to load a course for editing. With 140 lessons in a course, it takes about 22 seconds to edit a course node. I'm testing locally on a new D7 test site with devel-generated content.
Questions:
(1) Are there any obvious steps I should take to improve performance with field collections?
(2) As an alternative to field collections, would creating a compound field in code likely improve performance significantly?
(3) For testing performance generally, is there a simple profiling tool I can use with Drupal?
Example of a small course with 10 lessons added as field collections: