Re: Многопоточность в ТКС апи ?
Планируется ли увеличивать масштабируемость по производительности с спользованием нескольких потоков внутри АПИ ?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
TechnologiCS → TechnologiCS → Использование TechnologiCS API → Многопоточность в ТКС апи ?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Планируется ли увеличивать масштабируемость по производительности с спользованием нескольких потоков внутри АПИ ?
до сегодняшнего дня не планировалось...но теперь подумаем...
подумайте подумайте.... было бы интереснее если бы обработка шла не 5 часов а скажем 2.5
а расскажите что у Вас обрабатывается 5 часов?
загрузка инструмента из экселя. Всего загружается 11000 позиций.
Sub doload() Dim y As Long Dim Note As String Dim Name As String Dim Inn As CSDN.Nomenclatures Dim SubClassifier As String Dim FirstSpace As Long CreateTCSObjects (False) Set Inn = App.Nomenclatures(24) y = 1 Note = CompressSpaces(Cells(y, 1).Value) Name = CompressSpaces(Cells(y, 2).Value) While Note <> "" Inn.DbTree.RootNodes.Item(0).Selected = True If Not Inn.Locate("NOTE", Note, 0) Then FirstSpace = InStr(1, Name, " ") If FirstSpace > 0 Then SubClassifier = Mid(Name, 1, FirstSpace - 1) Else SubClassifier = "" End If Inn.CreateNew Inn.Properties("NOTE").Value = Note Inn.Properties("NAME").Value = Name If FirstSpace > 0 Then Inn.Properties("NODE_ID").Value = CreateClassifier(Inn.DbTree, Inn.DbTree.RootNodes.Item(0), "\\_Ýíåðãîçàï÷àñòè\\Îñíàñòêà\\" + CapitalizeFirst(SubClassifier)) Else Inn.Properties("NODE_ID").Value = CreateClassifier(Inn.DbTree, Inn.DbTree.RootNodes.Item(0), "\\_Ýíåðãîçàï÷àñòè\\Îñíàñòêà\\" + CapitalizeFirst(Name)) End If Inn.SaveChanges Cells(y, 3).Value = "created" End If y = y + 1 Note = CompressSpaces(Cells(y, 1).Value) Name = CompressSpaces(Cells(y, 2).Value) Cells(y, 1).Activate DoEvents Wend End Sub
мы сейчас проведём следственный эксперимент...но уже сейчас могу сказать что проблема не в АПИ ТКС'а.
Например, если убрать DoEvents - скорость вполне может увеличиться в десятки раз
(или это масштабируемость в сторону уменьшения производительности?)
Sub FormMacro_test(TCSActiveModule) LogObject.ScriptTimeOut = 0 LogObject.ClearLog LogObject.WriteLogString("Start") For i=0 To 11000 Call TCSApp.ShowProgressMessage(i,"") Call TCSActiveModule.CreateNew TCSActiveModule.Properties("NOTE").Value = "test" & CStr(i) TCSActiveModule.Properties("NAME").Value = "test" & CStr(i) TCSActiveModule.Properties("NODE_ID").Value = 810 Call TCSActiveModule.SaveChanges Next TCSApp.HideProgressMessage LogObject.WriteLogString("End") Call TCSApp.ShowMessageBox("Result",LogObject.LogText) End Sub
Результат 3мин 14сек
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
TechnologiCS → TechnologiCS → Использование TechnologiCS API → Многопоточность в ТКС апи ?