Вверх ↑
Этот топик читают: Гость
Ответов: 8921
Рейтинг: 823
#106: 2011-09-10 21:48:34 ЛС | профиль | цитата
Andrey, начинайте в биллиард играть, не менее часа каждый день
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#107: 2011-09-10 22:05:41 ЛС | профиль | цитата
Леонид писал(а):
начинайте в биллиард играть
начнёт рука или в локте или в плече болеть.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1731
Рейтинг: 68
#108: 2011-09-10 22:58:39 ЛС | профиль | цитата
[flood]Потом "банки" на руках будут [/flood]
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#109: 2011-09-11 15:29:54 ЛС | профиль | цитата
Леонид,
#pas
const koef = PI / 44100;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8921
Рейтинг: 823
#110: 2011-09-11 16:37:46 ЛС | профиль | цитата
Tad, чуть было не поддался там же два канала, а тиковая переменная одна, получается 2*PI/(2*44100)=PI/44100, частоту-то в два раза меньше я определил бы
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#111: 2011-09-11 19:05:57 ЛС | профиль | цитата
Леонид,
оптимизация в Delphi писал(а):
Не используйте конструкции типа a:=10*sin(45*pi/180); Delphi не вычислит эту константу на этапе компиляции, напротив, будет послушно вызывать sin и pi по ходу выполнения программы! В случае, если угол является переменной, по крайней мере pi желательно заменить константой 3,1415...

Delphi прекрасно справляется с выражениями, полностью составленных из констант – они вычисляются на этапе компиляции.

В Вашем случае объявление константой выражения PI/44100, вычислит его при компиляции и дальше будет подставлять в коды уже готовое 7,12358276e-5
Если бы Ваша формула имела вид
_Freq1 := (toInteger(_Data) * PI) / 44100;, то я бы просто посоветовал изменить
_Freq1 := (toInteger(_Data) * 3.1415) / 44100;
В данной схеме ускорение работы программы не нужно, но если где-то в цикле, то можно выиграть даже очень неплохо.

------------ Дoбавленo в 18.46:
Это не ошибка, просто "птичку жалко".
------------ Дoбавленo в 18.56:
Ещё одно
оптимизация в Delphi писал(а):
Наиболее распространенный недочет – условие цикла записывается как:
for i:=0 to count – 1 do...

Delphi будет при каждой итерации вызывать метод count, вычитать из результата 1 и потом уже сверять. Настоятельно рекомендуется переписывать подобный код как

lin := count – 1;
for i:=0 to lin do...

------------ Дoбавленo в 19.05:
Аккумуляторов пока нет
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8921
Рейтинг: 823
#112: 2011-09-11 20:42:47 ЛС | профиль | цитата
Tad, принято (за "запомнил" не ручаюсь )
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#113: 2011-09-12 10:42:25 ЛС | профиль | цитата
Леонид, вот так должно быть веселей.
code_25144.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_25144.txt [2.5KB] [333]
Ответов: 8921
Рейтинг: 823
#114: 2011-09-12 11:35:45 ЛС | профиль | цитата
Tad, а rar-ом упаковать, а то примечания на кирилице кракозябрами, и из имеющегося выбора кодировок всё равно кракозябры
------------ Дoбавленo в 11.35:
Не надо, появилось и UTF=8 (плохо смотрел )
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#115: 2011-09-12 17:50:24 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 13:09:39
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#116: 2011-09-12 17:51:06 ЛС | профиль | цитата
Выше я.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8921
Рейтинг: 823
#117: 2011-09-12 18:30:21 ЛС | профиль | цитата
Tad, так долго не включал 2 147 483 648/88200/3600=6.76 час; а вообще-то не прверял, сейчас проверю
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#118: 2011-09-12 18:41:47 ЛС | профиль | цитата
Леонид, Так будет ещё быстрее считать.
#pas
procedure THiAsmClass.doSempl;
var Res:integer;
begin
Case Odd(i) of
False: Res:=round(_Vol1*sin(i*_Freq1) + _Vol2*sin(i*_Freq2));
True : Res:=round(_Vol1*cos(i*_Freq1)*_SSB1 + _Vol2*cos(i*_Freq2)*_SSB2);
end;
_hi_onEvent(onSempl, Res);
Inc(i);
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8921
Рейтинг: 823
#119: 2011-09-12 18:52:25 ЛС | профиль | цитата
If (i mod 88200)=0 then _hi_onEvent(onError, i); 10 минут -- в норме


карма: 19

0
Ответов: 16884
Рейтинг: 1239
#120: 2011-09-12 19:22:11 ЛС | профиль | цитата
Леонид писал(а):
10 минут -- в норме
все равно для i есть предел и программа йок.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)