Начал писать инвентаризацию на Basic под Windows используя WMIC. И обнаружил отличный функционал в виде ScriptControl. Я уж смерился с медленностью математики в Basic , а вот нашёлся неплохой выход для оптимизации.
Для примера, две процедуры считающие одно и тоже, но разными способами :
Option Explicit
Option Compatible
Sub testStarBasic
Dim dDateStart as Date
Dim dDateEnd as Date
Dim lNum as Long
Dim lNumOUT as Single
dDateStart= now()
lNumOUT=23
For lNum = 0 to 10000000
lNumOUT = (lNumOUT/2) +1.0256
Next
dDateEnd = now()
msgbox datediff("s",dDateStart,dDateEnd) & " " & lNumOUT
End sub
Sub testVB
Dim dDateStart as Date
Dim dDateEnd as Date
Dim a As ScriptControl, oMod
Dim lNum1 as Long
Dim lNumOUT as Single
dDateStart= now()
Set a = New ScriptControl
a.Language = "VBscript"
oMod = a.Modules.Add("Mod1")
oMod.AddCode ("Function sqrIt(lNumVB): Dim lNum : For lNum=0 to 10000000 : lNumVB = (lNumVB/2) +1.0256 : next : sqrIt = lNumVB : End Function")
lNum1=23
lNumOUT = oMod.Run("sqrIt",lNum1)
dDateEnd = now()
msgbox datediff("s",dDateStart,dDateEnd) & " " & lNumOUT
End sub
Разница в скорости на порядок.