...and the equivalent transactional code (below) to the above, takes 6.4 seconds...double the time.
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
DateTime start = DateTime.Now;
Transaction tr = db.TransactionManager.StartTransaction();
using(tr)
{
BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead, false) as BlockTable;
if(bt == null)
return;
BlockTableRecord modelspace = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false) as BlockTableRecord;
if(modelspace == null)
return;
for(int i = 0; i < 10000; i++)
{
using(Solid3d sol = new Solid3d())
{
sol.CreateBox(100.0, 50.0, 10.0);
modelspace.AppendEntity(sol);
tr.AddNewlyCreatedDBObject(sol, true);
}
}
tr.Commit();
}
DateTime finish = DateTime.Now;
TimeSpan elapsed = finish - start;
ed.WriteMessage("\nElapsed time: {0} hours, {1} minutes, {2}.{3} seconds.", elapsed.Hours, elapsed.Minutes, elapsed.Seconds, elapsed.Milliseconds);