Поднимаем производительность Basic через ScriptControl

Автор idro, 23 апреля 2017, 10:31

0 Пользователи и 1 гость просматривают эту тему.

idro

Начал писать инвентаризацию на 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


Разница в скорости на порядок.


economist

Прямо праздник какой-то!
LibreOffice 5303, W7-64bit, разница в ~12 раз.

А где почитать про ScriptControl
Какие еще языки поддерживаются, кроме VBScript и JScript?

Вот хороша сводная мурзилка (CHM в архиве) по VB/WSH,
всё это, выходит, доступно из StarBasic под Windows - см. вложение.

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...