Тема: Загадка TDMSObject.Content.Create
Потребовалось сделать импорт большого количества объектов из таблицы Excel (порядка 80000) в пустую настройку TDMS.
Перед таким ответственным делом решил провести оценку требуемого времени.
TDMS 3.0.99, база на локальном MSDE (возможно, это важно)
Проверку осуществлял из макроса Excel:
Sub ttt() Dim TDMSApp As TDMS.TDMSApplication Dim RootObj As TDMSObject Dim Obj As TDMSObject Dim i As Integer Dim Times() As Single Set TDMSApp = GetObject(, "TDMS.Application") If Err <> 0 Then MsgBox Err.Description Exit Sub End If ReDim Times(500) Set RootObj = TDMSApp.GetObjectByGUID("{B65E9778-8C7C-43FB-B633-1CB8AE053AB3}") Times(0) = Timer() For i = 1 To 500 Set Obj = RootObj.Content.Create("OBJ_Test") Obj.Attributes("ATTR_NameUn").Value = "Obj # " & CStr(i) If (i Mod 10 = 0) Then Times(i \ 10) = Timer() End If Next i For i = 1 To 500 Application.ActiveSheet.Cells(i + 2, 2) = Times(i) - Times(0) Next i End Sub
Изначально в настройке было всего несколько объектов (ок 20).
Первый тест - создание приведенной выше процедурой 500 объектов
Перед 2-м тестом перезапустил TDMS и Excel (на всякий) и создал еще 500 объектов
Перед 3-м тестом удалил последние созданные 500 объектов и еще раз запустил создание 500 объектов
На графиках показаны результаты. Временные "засечки" - каждые 10 созданных объектов
1-й график показывает время от начала операции
2-й график показывает время, затраченное на создание каждой 10-ки объектов (начиная со 2-го десятка)
На графиках хорошо наблюдается почти равномерное увеличение времени, требуемого на создание каждого последующего объекта.
Собственно, экстраполяция для 80000 объектов дала крайне обескураживающий результат.
С чем может быть связано такое нехорошее поведение TDMS?