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

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

Скорость работы с объектами в Delphi


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

Strange man ©   (2007-07-17 20:55:00) 

Скажите пожалуйста, с чем быстрее работать - с "class-like" records или с классами? Насколько велика разница? Если учитывать, что записи тоже будут создаваться динамически, т. к. в основном они используются как Array of record.
Ещё встречный вопрос: с чем быстрее работать - с памятью в стэке или с памятью, выделенной динамически? Почему?
Поиск не помонает: http://www.google.com/search?hl=ru&q=%D1%87%D1%82%D0%BE+%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B5%D0%B5+class+record&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=


Ega23   (2007-07-18 17:19:00) [41]

Ещё раз рекомендую заглянуть в исходники TCustomTreeView и посмотреть, как этот монстр реализован.


Ega23   (2007-07-18 17:17:00) [42]


> Чё? Я так понимаю, что ты хочешь сказать, что единственная
> причина того, что VirtualTreeView работает быстрее, чем
> стандартный контрол - только в использовании записей в качестве
> узлов? Тем самым ты утверждаешь, что использование записей
> даёт такой существенный прирост в скорости?


У тебя с адекватностью как? Я говорю, что яхта лучше чем первая казанка с подвесным мотором. А ты на основании этого делаешь вывод, что дизель - лучше. Потому что солярку использует.


Сергей М.   (2007-07-18 17:15:00) [43]

"игролепщики")


Сергей М.   (2007-07-18 17:15:00) [44]

"блохоловы", блинн)


Сергей М.   (2007-07-18 17:13:00) [45]


> Знаком, по крайней мере есть справочник


Ну так и посмотри на код, генерируемый компайлером в том или ином случае !

В чем проблема-то ?


> DevilDevil ©   (18.07.07 17:10) [29]


см. выше)


Игорь Шевченко   (2007-07-18 17:12:00) [46]

DevilDevil ©   (18.07.07 17:00) [23]

Это было давно и неправда. На современных процессорах количество команд в единицу времени не выражается целыми числами с учетом конвейеров.


Sdubaruhnul   (2007-07-18 17:11:00) [47]

> есть такой.

Спасибо за подтверждение.

> Гм... Записи чего? И вместо каких классов?

Если речь о TreeView, то можно было бы догадаться, что записи в качестве... там-дадам... УЗЛОВ.

>>>хотя это не единственная причина.

> Ты для начала загляни в реализацию TCustomTreeView, а потом говори.

Чё? Я так понимаю, что ты хочешь сказать, что единственная причина того, что VirtualTreeView работает быстрее, чем стандартный контрол - только в использовании записей в качестве узлов? Тем самым ты утверждаешь, что использование записей даёт такой существенный прирост в скорости?

> Быстрее чего(кого)?

Стандартного дерева, которое использует класс TTreeNode в качестве узлов.


DevilDevil   (2007-07-18 17:10:00) [48]

> Сергей М. ©   (18.07.07 16:58) [22]
> с классами работать не быстрее
> Галиматья несусветная)


если вопрос в скорости обращения к полям... то "Какие ваши доказательства"(с) ?


Strange man   (2007-07-18 17:10:00) [49]

Знаком, по крайней мере есть справочник


Сергей М.   (2007-07-18 17:06:00) [50]


> Strange man   (18.07.07 17:05) [26]


С системой команд целевого ЦП ты, надеюсь, знаком ?


Strange man   (2007-07-18 17:05:00) [51]


> DevilDevil ©   (18.07.07 16:54) [18]
> Разница между record-ами и классами только в конструкторе/деструкторе.
>
>
> Обращение к полям "по указателю" выполняется с одной скоростью.
>  Обращение к свойству (read/write field) = обращению к полю.
>
>
> Следующий вопрос.
>
> К полям record-а в стеке обращение происходит в 2 раза быстрее.
>  Но если пользоваться with, то все "потери" скорее всего
> соптимизируются до потери 1 такта.

Спасибо.

> P.S. мне кажется оптимизировать надо в других местах

В каких?

> Сергей М. ©   (18.07.07 16:56) [19]

Можешь в 2х словах объяснить, почему мой тест тупой? Что я не учитываю?


DevilDevil   (2007-07-18 17:04:00) [52]

var
 R : TRect;

function SomeProc() : integer;
begin
// ...
 Result := R.Left; // 1 такт
end;


DevilDevil   (2007-07-18 17:03:00) [53]

function SomeProc(R : PRect) : integer;
begin
// ...

Result := R.Left; // 1 такт если eax не был запорчен
end;


DevilDevil   (2007-07-18 17:00:00) [54]

var
 R : TRect;
begin
//...
 Result := R.Left; // 1 такт (1 операция)
end;

var
 R : PRect;  
//...
 Result := R.Left; // 2 такта (2 операции)


Сергей М.   (2007-07-18 16:58:00) [55]


> с классами работать не быстрее


Галиматья несусветная)


DevilDevil   (2007-07-18 16:58:00) [56]

если тебе так хочется это услышать, то "с классами работать не быстрее"


Сергей М.   (2007-07-18 16:57:00) [57]


> К полям record-а в стеке обращение происходит в 2 раза быстрее


галиматья несусветная)


Сергей М.   (2007-07-18 16:56:00) [58]


> как сделать нормальный?


Для начала изучить принцип действия конкретного оптимизирующего компимлятора.

Боюсь, тебе это не по силам, судя по амбициям)


DevilDevil   (2007-07-18 16:54:00) [59]

Разница между record-ами и классами только в конструкторе/деструкторе.

Обращение к полям "по указателю" выполняется с одной скоростью. Обращение к свойству (read/write field) = обращению к полю.

Следующий вопрос.

К полям record-а в стеке обращение происходит в 2 раза быстрее. Но если пользоваться with, то все "потери" скорее всего соптимизируются до потери 1 такта.

P.S. мне кажется оптимизировать надо в других местах


Strange man   (2007-07-18 16:53:00) [60]


> Твой "тупой" тест абсолютно ни о чем не говорит)

И как сделать нормальный?


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

Наверх

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