Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Май 2017, 00:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Поднимаем производительность Basic через ScriptControl  (Прочитано 133 раз)
0 Пользователей и 1 Гость смотрят эту тему.
idro
Новичок
*
Offline Offline

Сообщений: 24


« Стартовое сообщение: 23 Апрель 2017, 10:31 »

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

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

« Последнее редактирование: 23 Апрель 2017, 14:42 от idro » Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 520


« Ответ #1: 24 Апрель 2017, 08:37 »

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

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

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


* Automation.7z (131.15 Кб - загружено 2 раз.)
Записан

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

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!