Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Увеличится ли скорость в моём случае если я сделаю 2 потока? [D7, WinXP]


Страницы:   1 2 3 4 5

rolex ©   (2005-03-08 18:45:00) 

Моя прога предположим ищет файлы на винте. Увеличится ли скорость общего поиска, если я его разобью на 2 потока?


Defunct   (2005-03-15 10:10:00) [1]

except
   on E:Exception do ShowMessage(E.ClassName+' ' +E.Message)
end
inherited;
end;
То что жирным выделил удалил из кода. А то компилятор ругался.


точка с запятой после end потерялась.

rolex   (14.03.05 21:57) [80]

Strings := TStringList.Create;
В OnCreate формы перенесите

А в Button1Click - замените Strings := TStringList.Create; на Strings.Clear;


GuAV   (2005-03-14 23:13:00) [2]

А самое  прикольное то, что этот inherited хоть и нафиг не нужен для WM_USER + 90, ошибка компиляции вызванная его наличием IMHO указывает на ошибку при копировании кода, т.к. в message методе inherited есть вызов обработчика сообщения наследника, и не исключено что в этом и заключается причина [80].


Anatoly Podgoretsky   (2005-03-14 23:09:00) [3]

Ну это уровень компетентности программиста.
Молодец, наш человек - переписать все нафиг :-)


Дмитрий Мыльников   (2005-03-14 23:06:00) [4]

А я бы вообще запретил использовать статические процедуры и функции. :)))
Просто недавно пришлось одну прогу переделывать, так мы там с этими статическими функциями намучались. Вроде начнается иерархия классов, всё как у взрослых, только большая часть фукнций в базовых классах объявлена abstract. А ещё чуть позже выяснилось, что в конечных классах понатыкано вызовов из статических функций, и всё это ООП тем самым "коту под хвост". Её уже не перекроешь никак, и виртуальной не объявишь. Короче, пришлось всё почти полностью переделывать...


Anatoly Podgoretsky   (2005-03-14 22:59:00) [5]

Естественно это только для методов.


Дмитрий Мыльников   (2005-03-14 22:55:00) [6]

Небольшое замечание по ООП в Delphi.

Во-первых, между записью

Inherited;

и

Inherited Create(False);

очень большая разница. Не помню начиная с какй версии, но в D7 точно, если написано просто Inherited, то компилятор подставляет вызов функции предка только в тех случаях, когда она в нём действительно существует. То есть, если в предке она объявлена abstract, либо не объявлено вовсе, то никакого вызова вставлено не будет. Зато если позже она перестанет быть абстрактной или появляется в предке, и в ней появится какой-то код, то вызов будет выполнен.
Если же написать с явным указанием, как во втором случае, то компилятор будет пытаться подставлять вызов всегда, в результате чего будет либо ошибка во время компиляции, либо abstract error во время выполнения (жаль только, что этот механизм не работает для функций).


rolex   (2005-03-14 21:57:00) [7]

To Defunct:
Ууу... я страшный баг нашёл.
Когда запустите прогу, посмотрите в Диспетчере Задач скока она места в ОЗУ съедает. Ок запомнили. Потом каждый раз при нажатии кнопки "Скан", размер проги в ОЗУ всё больше и больше растёт!!!


rolex   (2005-03-14 18:32:00) [8]

Всё ништяк прога! Всю ночь буду в код въезжать, чтобы сибе также сделать!!! Скорость рулевая!!!
Тока вот тут ошибочка:
procedure TForm2.UpdateList;
var
AList : TStrings;
begin
 try
    AList := ST.ExportList;
    Strings.AddStrings( AList );
    AList.Free;
    UpdateControls;
 except
    on E:Exception do ShowMessage(E.ClassName+' ' +E.Message)
 end
  inherited;
end;

То что жирным выделил удалил из кода. А то компилятор ругался.

А dpr файл такой должен получиться, да?:
program Project1;

uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm2, Form2);
 Application.Run;
end.


Alexander Panov   (2005-03-14 18:26:00) [9]

begin...end ©   (14.03.05 18:11) [77]

Ок, спасибо, буду знать.

К сожалению, только реализация TThread отстала по времени.


begin...end   (2005-03-14 18:11:00) [10]

> GuAV ©   (14.03.05 18:04) [75]
> Alexander Panov ©   (14.03.05 18:09) [76]

AfterConstruction в Delphi 4 появился.


Alexander Panov   (2005-03-14 18:09:00) [11]

GuAV ©   (14.03.05 18:04) [75]

Насчет реализации AfterConstruction в D6 может быть заблуждаюсь, так как обратил внимание на него только лишь в связи с изменением реализации TThread в D6.


GuAV   (2005-03-14 18:04:00) [12]


> так как, начиная с D6 изменилась реализация TObject -
> появился метод AfterConstruction


Аж только в D6 ? не знал...


Defunct   (2005-03-14 17:51:00) [13]

[73]

угу


begin...end   (2005-03-14 17:50:00) [14]

> Defunct ©   (14.03.05 17:47) [72]

Delphi 5?


Defunct   (2005-03-14 17:47:00) [15]

GuAV ©   (14.03.05 17:36) [70]

constructor TThread.Create(CreateSuspended: Boolean);
var
 Flags: DWORD;
begin
 inherited Create;
 AddThread;
 FSuspended := CreateSuspended;
 Flags := 0;
 if CreateSuspended then Flags := CREATE_SUSPENDED;
 FHandle := BeginThread(nil, 0, @ThreadProc, Pointer(Self), Flags, FThreadID);
end;


Alexander Panov   (2005-03-14 17:44:00) [16]

GuAV ©   (14.03.05 17:36) [70]
Так что, если заменить на inherited Create(False); ,  универсальности не будет ?


Не будет.

Код будет направильно работать в D5, например,
так как, начиная с D6 изменилась реализация TObject - появился метод AfterConstruction, который вызывается после завершения выполнения любого конструктора.


GuAV   (2005-03-14 17:36:00) [17]


> Alexander Panov ©


Так что, если заменить на inherited Create(False); ,  универсальности не будет ?


Defunct   (2005-03-14 17:35:00) [18]

> P.S. А почему List нигде не освобождается? Или я что-то не заметил?

TForm2.UpdateList


begin...end   (2005-03-14 17:34:00) [19]

Ну вопрос-то был про Delphi 7.


Alexander Panov   (2005-03-14 17:33:00) [20]

И еще, как насчет изменения логики TThread в следующих версиях?


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо