vitaly_l писал(а):Как TaskMeneger считает загруженность процессора
http://www.rsdn.ru/forum/alg/3245020.flat.aspx
Модератор: Модераторы
vitaly_l писал(а):Как TaskMeneger считает загруженность процессора
iskander писал(а):http://www.rsdn.ru/forum/alg/3245020.flat.aspx
Т.е. процессор занят, даже если он ничего не делает и ожидает загрузки данных из памяти?
iskander писал(а):Т.е. процессор занят, даже если он ничего не делает и ожидает загрузки данных из памяти?
Тоже самое говорил vada про приоритеты...Ну да. Он же не может в это время выполнять задачи других процессов. А если планировщик как-то ухитрится засунуть в это время другой процесс, то это автоматически скажется на длине очереди и, соответственно, на показателях загрузки.
vitaly_l писал(а):Вывод: Можно выставить программе самый высокий приоритет,
vitaly_l писал(а):Ответ замерить за 1 секунду.
vitaly_l писал(а):Количество ассемблеровских обращений к процессору или строк
Function GetSystemTimeAsFileTime64():int64;//Получение системного времени в 100 нс. интервалах
Var
tmp_FTime:TFileTime;
Begin
GetSystemTimeAsFileTime(tmp_FTime);
Result:=Int64(tmp_FTime);
End;
alexey38 писал(а):Чтобы оптимизировать нужно знать много.
iskander писал(а):Посмотрите в окне дизассемблера.
for i := 0 to 1000000 do arrX[i] := i;
for i := 0 to 1000000 do arrY[arrX[i]] := Random(arrX[i]);
for i := 0 to 1000000 do arrZ[arrY[arrX[i]]] := Random(arrX[i]+arrY[arrX[i]]);
for i := 0 to 1000000 do arrX[i] := i;
for i := 0 to 1000000 do
begin
x := arrX[i];
arrY[x] := Random(x);
end;
for i := 0 to 1000000 do
begin
x := arrX[i];
y := arrY[x];
arrZ[y] := Random(x+y);
end;
vada писал(а):Какой прикладной смысл ваших изысканий?
Нет - это не погрешность... Возможно это не 10000 тактов, а "некое время"... Однако в описании функции говорят что это таты... Но это уже не имеет значения т.к. разница постоянная, даже если менять варианты местами... а погрешность действительно бывает, примерно в 3-х из 10 попытках...Sergei I. Gorelkin писал(а):Если бы ты сэкономил хотя бы один такт в цикле, разница была бы в этот самый миллион. А десять тысяч являются как раз погрешностью измерения.
Sergei I. Gorelkin писал(а):Только фишка в том, что компилятор умеет делать это сам.
vitaly_l писал(а): for i := 0 to 1000000 do arrZ[arrY[arrX[i]]] := Random(arrX[i]+arrY[arrX[i]]);
vitaly_l писал(а):в 7 тестах из 10 работает на 10000 тактов медленнее
SAK писал(а):Открытия неизведанного не заметил и так всё очевидно.
vitaly_l писал(а):Я предлагаю GetSystemTimeAsFileTime заменить на QueryPerformanceCounter - это более точно отображает, точнее чем rdtsc...
тогда будет более точный ответ и ничего перемножать не потребуется...
alexey38 писал(а):http://www.devdoc.ru/index.php/content/view/queryPerformanceCounter.htm
alexey38 писал(а): Например, в матричной математике есть такое понятие как разряженные матрицы. Есть нужна сортировка, то ее можно сделать разными методами, в зависимости от вида данных. Для поиска строк есть хэши. Для рендеринга можно использовать ресурсы видеокарты. И т.п.
alexey38 писал(а):Те крохи которые Вам удалось соптимизировать - это мелочь. Ради нее стоит гнаться только если другие средства исчерпаны.
alexey38 писал(а):Применение разных методов может ускорить выполнение задач в десятки, сотни, тысячи или даже миллионы раз.
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 238