Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

VCL2MCK   Найти похожие ветки 

 
sff ©   (2006-02-10 09:55) [0]

Можно ли переделать (как нибудь полегче) существующий VCL проект  в MCK проект?


 
Barloggg   (2006-02-10 10:41) [1]

хмм... а куда делся BaryVetal?
он же вроде занялся конвертером?

А вообще недоконвертер есть, где-то в архивах.


 
Vedun   (2006-02-10 18:56) [2]

Конвертер уже существует. И даже конвертирует прстые проекты. Однако работы еще много. Некоторое время назад BaryVetal приостановил работу над проектом. Не знаю, как обстоят дела сейчас. Надо-бы с ним связаться...


 
Vedun   (2006-02-10 19:02) [3]

Только конвертер переделывает VCL не в MCK, а в чистый KOL.


 
Thaddy   (2006-02-10 22:09) [4]

As it should be ;)

Serious: that would be a VERY difficult thing to do, since you have to maintain and convert two sets of files: one the mirror set for the VCL and the other the plain kol project.

I am working for years now to create a 100% KOL solution, but I may  grow a beard longer than Vladimir"s before it is finished ;)
Two way tools for KOL without MCK is almost not possible without RTTI, although the windows API class level has some possibilities with get/set windowlong and my small recreate routine for KOL. Let alone with MCK.


 
BaryVetaL ©   (2006-02-13 10:02) [5]

Возвращаюсь... :-)

Конвертор пришлось не надолго отложить, просто я был у научного руководителя (кто не знает о чем я: у меня диплом по оптимизации программ на Delphi) и он очень доволен той работой которую я проделал, а так волки сыты, то и овцы не временно не думают про конвертор :-)))

На днях выложу на всеобщее обозрение.

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


//  Пример:
//procedure TForm1.Button1Click( Sender: TObject );
//var
//  S: string;
//  i: Integer;
//  j: Integer;
//begin
//  Edit1.Text := "0";
//  i := 0;
//  j := GetTickCount;
//  while i <= 999999 do begin
//    ProfilerStart( "IntToStr" );
//    S := IntToStr( i );
//    ProfilerEnd( "IntToStr" );

//    ProfilerStart( "Цикл while" );
//    while Length( S ) <> 6 do
//      S := "0" + S;
//    ProfilerEnd( "Цикл while" );
//
//    ProfilerStart( "Главное условие" );
//    if StrToInt( S[ 1 ] ) + StrToInt( S[ 2 ] ) + StrToInt( S[ 3 ] ) = StrToInt( S[ 4 ] ) + StrToInt( S[ 5 ] ) + StrToInt( S[ 6 ] ) then begin
//      Edit1.Text := IntToStr( StrToInt( Edit1.Text ) + 1 );
//    end;
//    ProfilerEnd( "Главное условие" );
//
//    ProfilerStart( "Увеличение ProgressBar" );
//    ProgressBar1.Position := Trunc( i * 100 / 999999 );
//    ProfilerEnd( "Увеличение ProgressBar" );
//
//    ProfilerStart( "Application+Inc(i)" );
//    Application.ProcessMessages;
//    i := i + 1;
//    ProfilerEnd( "Application+Inc(i)" );
//  end;
//  Label2.Caption := IntToStr( GetTickCount - j );
//  ProgressBar1.Position := 0;
//  ShowProfiler;
//end;
//  Результат:
//
// Результат работы профайлера
// Файл: C:\Program Files\Borland\Delphi6\Projects\Diplom\Задачи на оптимальность в диплом\Неоптимальная\Project1.exe
// --------------------------------------------------------------
//| Секция       | Application+Inc(i)
//| Мин время    | 0.000001 сек
//| Макс время   | 0.001462 сек
//| Средн время  | 0.000006 сек
//| Вызовов      | 1000000
//| Общее время  | 5.802796 сек
// --------------------------------------------------------------
//| Секция       | Увеличение ProgressBar
//| Мин время    | 0.000004 сек
//| Макс время   | 0.006566 сек
//| Средн время  | 0.000004 сек
//| Вызовов      | 1000000
//| Общее время  | 3.954001 сек
// --------------------------------------------------------------
//| Секция       | Главное условие
//| Мин время    | 0.000003 сек
//| Макс время   | 0.001522 сек
//| Средн время  | 0.000006 сек
//| Вызовов      | 1000000
//| Общее время  | 5.743231 сек
// --------------------------------------------------------------
//| Секция       | Цикл while
//| Мин время    | 0.000001 сек
//| Макс время   | 0.001506 сек
//| Средн время  | 0.000001 сек
//| Вызовов      | 1000000
//| Общее время  | 1.260588 сек
// --------------------------------------------------------------
//| Секция       | IntToStr
//| Мин время    | 0.000002 сек
//| Макс время   | 0.001015 сек
//| Средн время  | 0.000002 сек
//| Вызовов      | 1000000
//| Общее время  | 2.430998 сек
// --------------------------------------------------------------
//
// - - - - - - - - - - - - - Диаграмма - - - - - - - - - - - - - -
// --------------------------------------------------------------
//Application+Inc(i)     |******************************************************************************* *********************100%
//Увеличение ProgressBar |********************************************************************68%
//Главное условие        |******************************************************************************* *******************98%
//Цикл while             |*********************21%
//IntToStr               |*****************************************41%
//
// Приведенная диаграмма показывает продолжительность работы каждого блока


Это жуть какой неоптимальные подсчет!
Но наглядно показывает что занимает больше всего времени...

Модуль может работать как с VCL так и с KOL. Саму идею спер у одного профилировшика jdPro кажется... Но мне очень не нравилось как он работал, да и отчет получался не очень... А тут... Единственное что еще хотелось бы подправить это может как нибудь оптимизировать сам модуль :-) Туда дальше сделаю. Ладно ссылка на модуль:
http://www.rfms.adygnet.ru/Profiler.rar
Убедительная просьба если внесете в модуль какие нибудь изменения не ленитесь напишите мне...

PS для гуру: можете не смотреть если вы в программировании ас, то такие штуки вам ни к чему. У аса в голове ответ. А профайлер предназначен для новичков...



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.088 c
8-1145342391
mike66
2006-04-18 10:39
2006.11.26
bezie


2-1163174164
Fostr
2006-11-10 18:56
2006.11.26
Syntax error in query. Incomplete query clause.


2-1163097112
lsvit
2006-11-09 21:31
2006.11.26
Win API


15-1162823059
Виктор1985
2006-11-06 17:24
2006.11.26
Аналог RSDN@Home для дельфимастера?


4-1152609432
Balkon
2006-07-11 13:17
2006.11.26
Ожидание события порта открытого в режиме синхронного доступа