Commit_operation takes too long

No seriously, now I actually figured it out. :wink:

The following code takes progressively longer until the 10th iteration takes 8.56 seconds.

  def add_test
    Sketchup.active_model.start_operation('test', true, false, false) 
      t = Time.now.to_f
      for i in 1..100 
        cd =Sketchup.active_model.definitions.add('test')
        cd.behavior.cuts_opening = true
        cd.behavior.is2d=true
        cd.entities.add_line [0,0,0], [0,10,0] 
        tr = Geom::Transformation.new
        c = Sketchup.active_model.entities.add_instance cd, tr
        c.make_unique
        c.erase!
      end
    puts Sketchup.active_model.definitions.count
    puts ((Time.now.to_f-t)).to_s + ' seconds'
    Sketchup.active_model.commit_operation
  end 

It turns out what is taking so long is that SU is iterating through 1000 definitions to find a unique name.

The following code runs in 0.04 seconds (213 times faster), simply because the name is already unique.

  def add_test
    Sketchup.active_model.start_operation('test', true, false, false) 
      t = Time.now.to_f
      dc = Sketchup.active_model.definitions.count
      for i in dc+1..dc+100 
        cd =Sketchup.active_model.definitions.add('test'+ i.to_s)
        cd.behavior.cuts_opening = true
        cd.behavior.is2d=true
        cd.entities.add_line [0,0,0], [0,10,0] 
        tr = Geom::Transformation.new
        c = Sketchup.active_model.entities.add_instance cd, tr
        c.make_unique
        c.erase!
      end
    puts Sketchup.active_model.definitions.count
    puts ((Time.now.to_f-t)).to_s + ' seconds'
    Sketchup.active_model.commit_operation
  end