Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 11 из 116<  1 ... 8  9  10  11  12  13  14 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Ray Adams
Сразу видно старого наСИльника, в Си такие хохмочки только в путь.. :)

_________________
Цель жизни - d20 по жизни...



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Как при событии ЭТО СПАМ - ОТПРАВЬТЕ ЖАЛОБУ (синий квадрат) сделать параллельные вычисления массивов (а точнее процедур, которые выполняют вычисление этих массивов), скажем, А и В. И увеличиться ли от этого скорость, в сравнении, если б ети массивы считались последовательно?
Желательно с примерчиками.
Procedure MasA(N: word; A: array of byte);
Procedure MasB(N: word; B: array of byte);

_________________
Лучшая зашита - это нападение.


Последний раз редактировалось Halfback 08.10.2004 15:25, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Halfback
Лучше проведи оптимизацию по памяти.
Если нет зависимости по адресам при расчете A и B, то на шину смогут уходить по две команды.
Паралелизация (через потоки) ничего не даст, даже на двукамневой тачке.

_________________
Цель жизни - d20 по жизни...


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Цитата:
Лучше проведи оптимизацию по памяти.

???

_________________
Лучшая зашита - это нападение.


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Halfback
0. Разворачивай циклы. Для дельфей оптимально 8-и кратный разворот (камень - Celeron PIII Tualatin)
1. По чтению
1.1. Всегда вычитывай данные соответствующие размеру кэш-линии
1.2. Не используй "завязки" по адресам (a := B[1]; a2 := B[a])
1.3. Старайся не использовать данные (записи) размером больше страницы 4k
1.4. Выравнивай структуры на 4 байта
1.5. Старайся использовать линейное чтение
2. По записи
2.1. Не используй "завязки" по адресам
2.2. Используй линейную запись
2.3. Опять же, не забывай про выравнивание и размер страницы.

_________________
Цель жизни - d20 по жизни...


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Avaddon
Спасибо!!! Но из приведенного я мало что понял. Можешь поделиться материалом(с примерами) по оптимизации памяти?

Еще есть тупой вопрос: как в процессе сделать временную задержку? В Паскале, помниться, просто писал delay(1000) а тут не катит.

Кто знает, где можно скачать полный русский Help?

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Halfback Sleep(milliseconds)


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Скажем имеется процедура:
Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
Button1.Caption:= 'Pause';
for i:=1 to N do ListBox1.Items.Add( FloatToStr(i) );
Button1.Caption:= 'RUN';
end;

Так вот как сделать так, чтоб при нажатии кнопки Button1 цикл остановился, а при повторном нажатии - придолжился.

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Однозначного ответа нет, каждый может реализовать этот вариант по своему.
В цикле тебе надо использовать Application.ProcessMessages; и также имет пару глобальных переменных , указывающий в каком состоянии сейчас цикл, запущен , в режиме паузы или просто стоит. Так же надо иметь в виду, если у тебя на форме еще куча контролов так они тоже будут активны и смогут выполнять свою функцию, поэтому надо следить самому чтобы не напортачить.
А в просто варианте это можно сделать так.
Вот пример
На форме ListBox, Button, Label
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    CurState:longint;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
     CurState:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:longint;
begin
     if CurState=2 then
     begin
          CurState:=1; //set to Run
          Button1.Caption:='Pause';
          exit;
     end else
     if CurState=1 then
     begin
          CurState:=2; //set to Pause
          Button1.Caption:='Resume';
          exit;// if we already run it
     end else
     if CurState=0 then
     begin
          CurState:=1;//Run state
          Button1.Caption:='Pause';
     end;

     for i:=0 to 1000000 do
     begin
          ListBox1.Items.Add(inttostr(i));
          Application.ProcessMessages;
          Label1.Caption:=inttostr(i);
          while CurState=2 do Application.ProcessMessages; //in pause mode
     end;
     CurState:=0;
     Button1.Caption:='Run';
end;

end.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams версия 6. Глючит и пишет что ошибка kernel32.dll причем только на listview с viewstyle - vsreport и если сделать более одного столбца.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon Переходи на 7 версию, в ней полная и нормальная поддержка стилей. С 6 кажется у меня тоже такое было :)


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
У меня еще пара вопросов:
1. Что надо прописать, чтобы юзер не мог менять размеры формы? (Т.е. чтоб размеры формы были жестко зафиксированны).
2. Касается TChart. Там можно для отображения графика применить св-во Page, установив при этом число точек отображаемых на графике. Если, например, точек=50 а на одну Page задали 10 то Page:=5. С этим все понятно. Но можно также подключить Scroll для плавной прокрутки значений графика. Так вот как подключить Scroll? Все перепробовал - ничего не получается. Помогите! Мне очень надо!

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Halfback
1. Делать окно диалоговым
2. Сам TChar имеет прокрутку. Нажми правой клавишей мыши и тащу куда надо.


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Ray Adams
Цитата:
1. Делать окно диалоговым

Действительно!

Цитата:
Сам TChar имеет прокрутку. Нажми правой клавишей мыши и тащу куда надо.

Да так то оно так. Но у меня функция (а точнее набор видеоимпульсов) ограничен. А если водить мышью с зажатой правой кнопкой, то когда импульсы закончастся - "эффект скролинга" не прекратиться. Т.е. мне нужен скролинг только в пределах моего графика не более и не менее. Может прикрутить к Chart компонент ScrollBar и задать пределы?

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Цитата:
Может прикрутить к Chart компонент ScrollBar и задать пределы?

Наверное можно, но как не знаю. Я с ним почти не работал, с TChart я имею в виду


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Почему asm в Delphi такой кривой. Ну то уже дело такое.
Никто не скажет как избежать ошибок, которые провоцирует использование cpuid инструкции?
Есть код - выскакивает ошибка на вполне обыденной прямой как двери строке, комментирую ее, затем выскакивает на абсолютно другой, но то же нормальной строке. Беру раскомментирую строки и комментирую триклятую cpuid и при это ошибок больше нет. Как можно нормально юзать эту инструкцию?

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Цитата:
Почему asm в Delphi такой кривой.

Это с чего это он кривой то??? Нормальный там asm, просто у него нет поддержки специфичных для процессоров инструкций. Для этого лучше использовать чистый asm


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Млин!! :x Задолбался уже...
Вот пишу:
Код:
var
  p : PAnsiChar;
begin
  StrPCopy(p,'');
end;

И при выполнении получаю : Exception class EAcessViolation и т.д.
???
Вроде проще быть не может и пишу вроде все правильно, так в чемже дело???
ЗЫ Запарился уже :bandhead:

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Lord_of_Darkness
Указатель - инициализировать...

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Lord_of_Darkness И кто тебе такое показал вообще? :) Если тебе нужная PChar строка, используй массив.
Код:
var
  p : array [0..255] of char;
begin
  StrPCopy(p,'');//Нафига? пустая строка?
  StrPCopy(p,'Нафига она полная ?');
end;


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 11 из 116<  1 ... 8  9  10  11  12  13  14 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan