реклама на сайте
подробности

 
 
> Заоптимизировать строчку кода
:-)
сообщение Mar 10 2008, 20:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



Доброе время суток! Подскажите как можно заоптимизировать строчку:

c:=( (1023*j) div Nfs );

где

Nfs=12000;
j = 1..Nfs;

Строчка вычисляется в цикле по j.

Результат не должен зависеть от Nfs, т.к. Nfs может меняться.

P.S. Прога для обыкновенного настольного PC.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
SergEN
сообщение Mar 11 2008, 12:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-08-06
Из: Челябинск
Пользователь №: 19 619



А что слишком долго выполняется на современных компьютерах?
Можно избавится от умножения.
1023*j = 1024*j-j

1024*j - это просто побитный сдвиг влево на 10 разрядов.
А что такое "div"?

Сообщение отредактировал SergEN - Mar 11 2008, 12:51
Go to the top of the page
 
+Quote Post
:-)
сообщение Mar 11 2008, 12:59
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



Цитата(SergEN @ Mar 11 2008, 15:50) *
А что слишком долго выполняется на современных компьютерах?
Можно избавится от умножения.
1023*j = 1024*j-j

1024*j - это просто побитный сдвиг влево на 10 разрядов.
А что такое "div"?


Да, пробовал эту махинацию уже, но тут самое медленное - это деление. div - целая часть числа после деления, т.е. 7 div 2 = 3.
Go to the top of the page
 
+Quote Post
SergEN
сообщение Mar 11 2008, 13:45
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-08-06
Из: Челябинск
Пользователь №: 19 619



То есть обычное деление для целых чисел?

А если так:

с+=1023;
if(c>12000-1)
c-=12000;

Сообщение отредактировал SergEN - Mar 11 2008, 13:47
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016