Что лучше с точки зрения оптимизации ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Генрих
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 19.10.2004 (Вт) 20:58
Откуда: Рига

Что лучше с точки зрения оптимизации ?

Сообщение Генрих » 24.10.2004 (Вс) 11:39

Я пишу программу на VB6.
У меня в программе есть массивы с данными типа String.
Так же есть функции в разных стандартных модулях, которые обрабатывают элементы этих массивов. Функций много - в один модуль вместе с массивами не поместятся. Массивы тоже большие.

Есть два разных подхода как организовать программу:

1) Массивы String сделать Public, тогда функциям можно передавать только индексы элементов этих массивов, а не сами элементы - строки.
2) Массивы String сделать Private, тогда функциям передавать придется уже сами элементы - строки.

Что лучше с точки зрения оптимизации?
Мне кажется, что первый вариант лучше для оптимизации по скорости, так как передаются только индексы. Но с другой стороны массивы в этом случае придется объявлять Public, а не Private, что означает бОльшую (глобальную) область видимости этих массивов. Это тоже расходует ресурсы. Но я думаю, что второй вариант - это уже оптимизация по использованию оперативной памяти.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 24.10.2004 (Вс) 11:47

Генрих писал(а):Функций много - в один модуль вместе с массивами не поместятся
А ты что, значения масивов прямо в модуле назначаешь? Может лучше через текстовый файл или через БД?? Хотя…
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.10.2004 (Вс) 11:56

Передавать индексы лучше и быстрее во всех отношениях.
Расширение области видимости приводит к потере 4(!) байт на каждую функцию. Едва ли это кто-то заметит.
Изображение

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 25.10.2004 (Пн) 7:07

А может передавать строки по ссылке? Это быстрее чем передача индексов. Т.е. вместо func(i,j) передавать func(ss(i),ss(j)).
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Генрих
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 19.10.2004 (Вт) 20:58
Откуда: Рига

Сообщение Генрих » 31.10.2004 (Вс) 11:35

Спасибо за советы всем. Я не знал, что
Расширение области видимости приводит к потере 4(!) байт на каждую функцию. Едва ли это кто-то заметит.

Тогда, конечно, нужно передавать индексы.

Новый вопрос в продолжение темы об оптимизации. Что лучше?:

Функции у меня принимают еще переменные перичислимого типа данных, что тоже связано с оптимизацией, это своего рода тоже индексы. Как их (индексы массивов и переменные Enum) передовать ByRef (по умолчанию) или писать ByVal ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2004 (Вс) 18:03

Массивы в любом случае byref. Long лучше byval, что бы ни говорил на этот счёт Эплман :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 8

    TopList