powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Можно ли ускорить работу программы
9 сообщений из 9, страница 1 из 1
Можно ли ускорить работу программы
    #36995090
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно ускорить работу программы в данном куске кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim podstanovka As Integer
Dim n As Long
Randomize()
n = InputBox("Введите количество чисел")
For i =  1  To n
     podstanovka = Int( 0  +  100  * Rnd())
     Lx1.Additem podstanovka
Next (i)

Реально ли это? Так как n во многих случаях будет больше 100 млн.
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995109
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это что же за LX1 такой, куда влезет 100млн итемов.

тема неоднократно разбиралась - выход - уйти от этой необходимости.
никому и никогда не нужно 100 млн строк в списке.

либо постраничный вывод, либо фильтрация или и то и другое.
Пользователь не сможет ничего адекватно найти в таком списке, не говоря уже о том, что дело не в алгоритме.
допустим, каждый итем займет пару десятков байт в памяти. Вопрос, сколько требуется памяти для их загрузки?
тогда и ответ на вопрос, можно ли сделать быстрый алгоритм, очевиден
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995119
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа лично для меня, суть программы сбор и анализ статистических данных. Один из пунктов - рандомные числа. Не буду описывать суть всего эксперимента, но для полной картины мне нужно, чтобы была возможность сгенерировать и 100 млн. чисел.

Числа не обязательно добавлять в Listbox, можно в массив, но я думаю, что от этого особо ничего не изменится.
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995136
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEOMRЧисла не обязательно добавлять в Listbox, можно в массив, но я думаю, что от этого особо ничего не изменится.

числа невозможно добавить в листбокс, ибо индекс у него - Integer

а так, запасайтесь памятью, процессорами, терпением...

не знаю, что у вас там за задачи, но для обработки больших объемов данных лучше использовать sql-сервер
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995211
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не густо, Integer - число от -32768 до 32767
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995212
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, как раз массив или коллекция будет эффективнее. Вы же ещё эти данные и обрабатывать будете?
А быстрое заполнение... Ну, скажем, выделите сразу необходимое количество памяти (кстати, зачем вам Integer для элементов от 0 до 99? - хватило бы и Byte), и затем юзайте CopyMemory, EqualMemory... 9713372
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995553
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За подсказку по Byte спасибо, как-то я сам не сообразил.
Сегодня проверял на 10 млн. элементов.
10 млн. элементов свободно запихиваются в список, на это уходит более 500 сек. Памяти жрет 500 МB.
100 млн. пока не пробовал, уж слишком много времени на это надо, да и с памятью могут быть проблемы.
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995580
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEOMR...можно в массив, но я думаю, что от этого особо ничего не изменится.
Байтовый массив, 100 млн элементов, примерно 10 секунд
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Test()
  Const N& =  100000000 
  Dim b() As Byte, i&, t!
  ReDim b( 1  To N) ' 100 000 000 Bytes = 95.4 MB
  Randomize
  t = Timer
  For i =  1  To N
    'If i Mod 1000 = 0 Then Randomize
    b(i) = CByte( 100  * Rnd)
  Next
  Debug.Print Round(Timer - t,  3 ) & " s"
End Sub
...
Рейтинг: 0 / 0
Можно ли ускорить работу программы
    #36995584
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, не выводя через список, а добавляя сразу в массив действительно в 400 раз быстрее )))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Можно ли ускорить работу программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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