IPB
ЛогинПароль:

> Внимание! Действует предмодерация

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

3 страниц V < 1 2 3  
 Ответить  Открыть новую тему 
> Улучшение кода, Уменьшение времени работы программ
сообщение
Сообщение #41


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Да, все верно,
пирамида медленнее чем "быстрая сортировка".

Цитата
50 000 элементов: QSort - 13, HeapSort - 18
200 000: 58 и 100 соответственно



---
ЗЫ: спасибо trminator'y за помощь при проведении теста и разбор результатов.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #42


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Просто память физически устроена как конденсаторы [в каком бы то не было виде] в виде матрицы, и поэтому для перехода на следующий элемент требуется изменение только RAS цикла, и перехода считывателя на несколько мм а для перехода на ячейку в другом месте RAS и CAS счетчика...

Могу путать где RAS а где CAS - но при больших объемах используемой памяти значение большое...

Как нам объясняли, кэш нужен для хранения значения ЯПамяти при обновлении ячеек...


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #43


Гость






Обмен значений в переменных.

Для увеличения скорости работы программы при обмене значениями двух чисел a и b вместо конструкции
Код
{1}
a := a + b;
b := a - b;
a := a - b;


или конструкции
Код
{2}
a := a xor b;
b := a xor b;
a := a xor b;

желательно использовать буферную переменную:
Код
{3}
T := a;
a := b;
b := T;


Тестируем скорость выполнения операции обмена:
Код
const
 n = 25000;

var
 tm, tm1: longint;
 i, j: longint;
 a, b, T: word;
begin
writeln('n = ', n, ' * ', n);

a := 1; b := 12;
{----- With plus/minus -----}
tm1:= MemL[$0040:$006c];
for i := 1 to n do
  for j := 1 to n do
    begin
      a := a + b; b := a - b; a := a - b;
    end;
tm:= MemL[$0040:$006c];
tm:=tm-tm1;
writeln('#1: ',tm);

a := 1; b := 12;
{----- With xor -----}
tm1:= MemL[$0040:$006c];
for i := 1 to n do
  for j := 1 to n do
    begin
      a := a xor b; b := a xor b; a := a xor b;
    end;
tm:= MemL[$0040:$006c];
tm:=tm-tm1;
writeln('#2: ',tm);

a := 1; b := 12;
{----- With T -----}
tm1:= MemL[$0040:$006c];
for i := 1 to n do
  for j := 1 to n do
    begin
      t := a; a := b; b := t;
    end;
tm:= MemL[$0040:$006c];
tm:=tm-tm1;
writeln('#3: ',tm);
end.


Результаты тестирования:
Цитата
n = 10000 * 10000 (100,000,000 обменов)
#1: 29
#2: 29
#3: 15

n = 12000 * 12000 (144,000,000 обменов)
#1: 41
#2: 42
#3: 22

n = 15000 * 15000 (225,000,000 обменов)
#1: 64
#2: 65
#3: 38

n = 25000 * 25000 (625,000,000 обменов)
#1: 182
#2: 180
#3: 98

n = 45000 * 45000 (2,025,000,000 обменов)
#1: 584
#2: 574
#3: 318
 К началу страницы 
+ Ответить 

3 страниц V < 1 2 3
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.01.2021 14:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name