Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Порядок объявления переменных.


Страницы:   1 2

learner ©   (2006-07-27 15:21:00) 

Параметром в процедуру передовала указатель на следующую структуру:
SYSTEM_PROCESSES_ADD = packed record
   NextEntryDelta : ULONG;
   ThreadCount : ULONG;
   CreateTime : LARGE_INTEGER;
   UserTime : LARGE_INTEGER;
   KernelTime : LARGE_INTEGER;
   ProcessName : string;
   FullPath : string;
   UserName : string;
   BasePriority : KPRIORITY;
   ProcessId : ULONG;
   InheritedFromProcessId : ULONG;
   HandleCount : ULONG;
   VmCounters : VM_COUNTERS;
   PrivatePageCount : ULONG;
   IoCounters: IO_COUNTERS;
   Threads: array [0..0] of SYSTEM_THREADS;  
 end;

После изменения порядка объявления переменных:
SYSTEM_PROCESSES_ADD = packed record
   NextEntryDelta : ULONG;
   ThreadCount : ULONG;
   CreateTime : LARGE_INTEGER;
   UserTime : LARGE_INTEGER;
   KernelTime : LARGE_INTEGER;
   BasePriority : KPRIORITY;
   ProcessId : ULONG;
   InheritedFromProcessId : ULONG;
   HandleCount : ULONG;
   VmCounters : VM_COUNTERS;
   PrivatePageCount : ULONG;
   IoCounters: IO_COUNTERS;
   Threads: array [0..0] of SYSTEM_THREADS;
   ProcessName : string;<--Перемещено
   FullPath : string;<--Перемещено
   UserName : string;<--Перемещено  
 end;

скорость выполнения процедуры упала в пять раз !
Перепроверила раз сто. Вывод один:
От порядка объявления переменных зависит скорость.
Возникают два вопроса:
Почему это происходит и как в данной конкретной
стуктуре оптимальнее всего разместить переменные ?
Не перебирать же все возможные перестановки :))


learner   (2006-07-27 15:52:00) [21]

>[3] Сергей М. ©   (27.07.06 15:28)
"С дуба я не падала", а вот Вам необходимо подучиться хорошим манерам

Эту стуктуру использую и заполняю в мною написаной процедуре.
и как параметр ни в какие API функции не передаю.
Так что что хочу и как хочу так в ней и объявляю.


MBo   (2006-07-27 15:50:00) [22]

>StriderMan ©   (27.07.06 15:45) [5]
в msdn недокументировано.
http://www.rsdn.ru/article/qna/baseserv/enumproc.xml


Игорь Шевченко   (2006-07-27 15:50:00) [23]

Сергей М. ©   (27.07.06 15:28) [3]

Это не MSDN. Это вольная переделка моего творчества, похоже.


StriderMan   (2006-07-27 15:45:00) [24]


> MSDN тебе уже не указ ?)

че-то не нашел в MSDN такой структуры... может MSDN обновить...


tesseract   (2006-07-27 15:29:00) [25]

а она ещё и стандартная :-)

да больше так не надо делать.......


Сергей М.   (2006-07-27 15:28:00) [26]


> передовала


> После изменения порядка объявления переменных


Ты с дуба упала ?)
MSDN тебе уже не указ ?)

Там что, так прямо и написано, мол, меняй порядок следования полей записи как тебе вздумается ?)


tesseract   (2006-07-27 15:28:00) [27]


> От порядка объявления переменных зависит скорость.


В packed record да, зависит. Необходимо выровнять переменные по 4 байтам.


MBo   (2006-07-27 15:27:00) [28]

А почему массив Threads, как я полагаю, неопределенного размера (точнее, определяемого, видимо, динамически), не последним параметром во втором случае передается?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо