Re: Многопоточность в ТКС апи ?

Планируется ли увеличивать масштабируемость по производительности с спользованием нескольких потоков внутри АПИ ?

Re: Многопоточность в ТКС апи ?

до сегодняшнего дня не планировалось...но теперь подумаем... smile

Re: Многопоточность в ТКС апи ?

подумайте подумайте.... было бы интереснее если бы обработка шла не 5 часов а скажем 2.5

Re: Многопоточность в ТКС апи ?

а расскажите что у Вас обрабатывается 5 часов?

Re: Многопоточность в ТКС апи ?

загрузка инструмента из экселя. Всего загружается 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

Re: Многопоточность в ТКС апи ?

мы сейчас проведём следственный эксперимент...но уже сейчас могу сказать что проблема не в АПИ ТКС'а.
Например, если убрать DoEvents - скорость вполне может увеличиться в десятки раз smile
(или это масштабируемость в сторону уменьшения производительности?)

Re: Многопоточность в ТКС апи ?

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сек