![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Порядок объявления переменных.
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, как я полагаю, неопределенного размера (точнее, определяемого, видимо, динамически), не последним параметром во втором случае передается?