Начал писать инвентаризацию на 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
Разница в скорости на порядок.
Прямо праздник какой-то!
LibreOffice 5303, W7-64bit, разница в ~12 раз.
А где почитать про ScriptControl
Какие еще языки поддерживаются, кроме VBScript и JScript?
Вот хороша сводная мурзилка (CHM в архиве) по VB/WSH,
всё это, выходит, доступно из StarBasic под Windows - см. вложение.