powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как оптимизировать код и ускорить выполнения программы?
14 сообщений из 14, страница 1 из 1
Как оптимизировать код и ускорить выполнения программы?
    #39303408
Нормальный парень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые!
Кто поможет прояснить ситуацию с производительностью? В частности меня интересует - как приблизительно определить ресурсоёмкость программы или кода? Разговор идет не столько об объёме хранемой информации в переменных, сколько о замысловатостях функций.
На кто конкретно стоит обращать внимание при написании кода?

Думал, чем больше действий (строк кода), тем больше процессов будет выполнять программа и это влияет на ее производительность.
Но.. Хочу навести одну ситуацию - реализовал задачу двумя похожими способами и меня удивило то, что у них была одинаковая производительность! Имею ввиду количество обработанных фалов за 1 мин.
Хотя в одном из них использовал глобальные переменные (слышал о том, что они сильно нагружают оперативку), да и функций с кодом больше.
Считал, что второй способ будет шустрее - но оказалось одинаково! Как нибудь можно ускорить производительность?
Например, если сначала полученные добавить в массив, а добавить через range - может ускорить процесс?

Скажу сразу, стараюсь пользоваться такой логикой, которую можно использовать в другом языке, а не встроенными методами эксель.

Задача - имеются однотипные паспорта сделок менеджеров за несколько лет, требуется получить значения из известных ячеек и данные файла - путь, наименование и т.п..
Структура - общая папка - в ней папки по каждому сотруднику - в них подпапки с контрагентам - а те в свою очередь могут содержать другие подпапки, например, архив с паспортами за прошлый год или с другой информацией. В них же и файлы xls.
Но офисные планктоны не стремились к порядку, поэтому файлы xls могут находится как в коренной папке, так и в подпапках.

За основу взял FDO для обоих способов
процедура - fsoObj - вызывает рекурсивную процедуру screachFilesFolder(fso.GetFolder(str)) 'путь на общую папку
Та через For Each.. перебирает сначала файлы эксель, далее также перебирает рекурсивно подпапки с вызовом screachFilesFolder(folderSub)

Способ первый

'переменные модуля
Private wbObj As New obj 'встроенный класс, найденный эксель
Private enterObject As activeWB 'Type модуля, книга для данных

call fsoObj - call screachFilesFolder(fso.GetFolder(str)) - вызывает процедуру - outDataObject
***
Процедура outDataObject(fileFolder.Name, fileFolder.Path, currentFolder.ParentFolder.Name, currentFolder.Name) - присваивает значения свойствам переменной wbObj
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wbData = GetObject(PathFile) 'обращаемся к найденному файлу
.Трейдер = wbData.Sheets(1).Cells(6, 3).Value 'определяем значение свойству
.ИмяФайла = NameFile
Call enterDataObject 'вызывает конструктор моего файла для добавления полученных данных (ниже коротко)
wbData.Close 'закрываем файл
***
Функция enterDataObject - определяет значения переменной enterObject, его свойства - это ячейки для добавления данных
With enterObject
Set .wbBook = Workbooks("MyBookData") 'моя книга
Set .sh = .wbBook.Sheets(.numSheetData) 'лист для данных, если больше 65000 срок, переходит на другой лист
.cellLastRow = .sh.Cells(Rows.Count, 1).End(xlUp).Row 'последняя заполненная ячейка
Set .ТрейдерБаза = .sh.Cells(.cellLastRow + 1, 3) 'определяет свойство as Object
Set .ИмяФайлаБаза = .shТест.Cells(.cellLastRow + 1, 8)
End With
Call constructorBase 'заполняет данные
**
Процедура constructorBase - добавляет данные в мой файл
With enterObject
.ТрейдерБаза.Value = wbObj.Трейдер
.ИмяФайлаБаза.Value = wbObj.ИмяФайла
End With
***
в завершении - CLEARDataObject - Все удаляем и очищаем
Set fso = Nothing
Set fileFolder = Nothing
Set folderSub = Nothing
Set wbObj = Nothing
Set wbData = Nothing
Set enterObject = Nothing
***

Второй способ
call fsoObj - call screachFilesFolder(fso.GetFolder(str)) - вызывает процедуру - constructorData
***
Процедура constructorData(NameFile As String, PathFile As String, paråntFolder As String, curFolder As String) - добавляет данные
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wbData = GetObject(PathFile) 'найденный файл
Set wbBook = Workbooks("MyBook") 'мой файл
cellLastRow = wbBook.Sheets(numSheetData).Cells(Rows.Count, 1).End(xlUp).Row 'последняя ячейка, если больше 65000 срок, переходит на другой лист
wbBook.Sheets(numSheetData).Cells(cellLastRow + 1, 3).Value = wbData.Sheets(1).Cells(6, 3).Value 'добавляем значение Трейдер
wbBook.Sheets(numSheetData).Cells(cellLastRow + 1, 8).Value = NameFile 'имя файла
wbData.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
***
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39303468
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже просил в предыдущем топике научиться оформлять код с помощью тэгов...
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39303470
Нормальный парень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

ну не умею я.. не получается...
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39303578
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть выделить жирным получается, а то же самое сделать с кодом не получается?
И даже не получается нажать "цитировать" там, где уже код оформлен, и посмотреть, как это сделано?
Тренируйтесь http://www.sql.ru/forum/test
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39303629
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
львиная доля времени тратится на открытие файлов, поэтому оптимизация кода результата не даст.

даст результата хранение файлов на ssd.
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39304876
vasatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нормальный парень В частности меня интересует - как приблизительно определить ресурсоёмкость программы или кода?

Тормозит - значит низкая производительность, летает - высокая
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39304879
vasatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сколько ресурсов потребляет - это можно посмотреть в диспетчере задач, на сколько грузит процессор и сколько потребляет памяти.
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39311461
Нормальный парень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyдаст результата хранение файлов на ssd.
А вот тут можно подробнее? Что это за штуковина такая "ssd" и с чем ее едят?

Этот скрипт обошел несколько тысяч файлов, первая сотня быстро прошла, а далее стало медленнее. Но комп не тормозил, в стандартном режиме работал. Обратил внимание на то, что много времени уходило на "перенос" значений.
Есть основание предполагать, что даже может повлиять на производительность свойство FormulaR1C1 вместо Value.

Но основное я понял - циклы и условия сильно тормозят процесс.
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39311478
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный пареньпервая сотня быстро прошла, а далее стало медленнее.Посмотрите, нет ли утечки памяти
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39312146
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный пареньAntonariyдаст результата хранение файлов на ssd.
А вот тут можно подробнее? Что это за штуковина такая "ssd" и с чем ее едят?

https://market.yandex.ru/catalog/91033/list?hid=91033&track=fr_cm_params&glfilter=2141164606:6401445&deliveryincluded=0&onstock=1

Нормальный пареньЭтот скрипт обошел несколько тысяч файлов, первая сотня быстро прошла, а далее стало медленнее. Но комп не тормозил, в стандартном режиме работал. Обратил внимание на то, что много времени уходило на "перенос" значений.
следите за памятью, потребляемую экселем, в диспетчере задач. скорее всего действительно есть утечка, и тормоза начались, когда оперативка исчерпалась и система начала использовать файл подкачки.

Нормальный пареньНо основное я понял - циклы и условия сильно тормозят процесс.сами по себе они не тормозят. вопрос в том, что в них сравнивается и крутится.
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39327017
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный пареньShocker.Pro,

ну не умею я.. не получается...
если у вас не хватает мозгов отформатировать своё сообщение, то вряд ли хватит ума оптимизировать свой код.
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39327031
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оффтопик, ибо ветка все равно протухла

Роман
- какими судьбами у нас в VB?
- ты чего вдруг без работы?
- куда дел буквы "З" и "Ъ"?
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39327114
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProОффтопик, ибо ветка все равно протухла

Роман
- какими судьбами у нас в VB?
- ты чего вдруг без работы?
- куда дел буквы "З" и "Ъ"?

1. =) ну я раньше был фанат QB, PDSBasic и на VB тоже писал :) вот зашел глянуть, что нового :) и вижу, что всё по старому :)
2. Работа сдохла :)
3. Дома клаву дети сломали ) новая только едет :) ждать еще 2 недели, у меня уже глаз дёргается
...
Рейтинг: 0 / 0
Как оптимизировать код и ускорить выполнения программы?
    #39327141
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По старому... а что у нас может быть нового? ))
Работу жаль. Почему у вас там спецы твоего уровня на фуллтайм?
Вот у меня в шкафу на балконе всегда лежит запасная клава... хотя детей нет )
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как оптимизировать код и ускорить выполнения программы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]