Тема: Не ужели VBA работает быстрее .NET? Помогите разобратся

Имеется чертёж, в нём ровно 1 миллион точек. Требуется обработать все эти точки поочерёдно особым образом, но чтобы добраться до сути дела упростим задачу: каждую точку необходимо сдвинуть на -2000000м по оси X.
Есть код на VBA:

Public Sub TestMovePointsVBA()
Dim Tmr As Double
Tmr = Timer
Dim acEntity As AcadEntity
Dim acPoint As AcadPoint
Dim pnt3D As Variant
For Each acEntity In ThisDrawing.ModelSpace
    If TypeOf acEntity Is AcadPoint Then
        Set acPoint = acEntity
        pnt3D = acPoint.Coordinates
        pnt3D(0) = pnt3D(0) - 2000000
        acPoint.Coordinates = pnt3D
    End If
Next acEntity
ThisDrawing.Utility.Prompt "Время: " & Format(Timer - Tmr, "0.000") & vbCr
'>_ _vbarun Время: 17.824
End Sub

Этот код редактирует точки за 18 сек.
Попытался повторить тоже самое с исполькованием DLL-ки написанной на .Net:

<CommandMethod("TestMovePointsWithTrans")>
Public Sub TestMovePointsWithTrans()
    Dim Tmr As DateTime = DateTime.Now
    Dim pnt3D As Point3d
    Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
    Dim acCurDb As Database = acDoc.Database

    Using acLckDoc As DocumentLock = acDoc.LockDocument()
        Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
            Dim acBlkTbl As BlockTable = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
            Dim acBlkTblRec As BlockTableRecord =
            acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForRead)

            For Each acObjId As ObjectId In acBlkTblRec
                If (acObjId.ObjectClass().DxfName = "POINT") Then
                    Using acPoint As DBPoint = acObjId.GetObject(OpenMode.ForWrite)
                        pnt3D = acPoint.Position
                        acPoint.Position = New Point3d(pnt3D.X - 2000000, pnt3D.Y, pnt3D.Z)
                    End Using
                End If
            Next

            acDoc.Editor.WriteMessage("Обработка точек: " & (DateTime.Now - Tmr).TotalSeconds & " сек." & vbCrLf)
            '>_ Обработка точек: 3.103 сек.
            acTrans.Commit()
            acDoc.Editor.WriteMessage("Операция завершена: " & (DateTime.Now - Tmr).TotalSeconds & " сек." & vbCrLf)
            '>_ Операция завершена: 28.131 сек.
        End Using
    End Using
End Sub

И получается, что операция длится более 28 сек (в полтора раза дольше!), хотя насколько я читал .Net должен работать быстрее. Причем, обработка точек длится всего 3 сек, остальные 25 сек трансакция вносит изменения в базу данных чертежа (на сколько я понимаю, если не так, поправьте, пожалуйста).
Может быть я не так использую трансакцию? Или есть более быстрые способы редактирования объектов?

Использовался "AutoCAD 2015 Map". И теперь вишенка на тортике: тот же самый код VBA в "AutoCAD Land Enabled Map 2009" на том же файле (с 1 миллионом точек) выполняет ту же операцию за 6.770 сек! Как так???