Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 20   вперед  Ctrl
 Re: RAD Studio 10.3 Rio  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3935
_Vasilisk_,

смысл в том, чтобы у программиста для некоторых сущностей были убраны лишние или опасные вызовы. Такой вот прокси/фасад средствами самой системы. Не то, что такое хочется -- просто пример неудобства и источника косяков при работе с той же VCL.

К сообщению приложен файл. Размер - 15Kb
28 ноя 18, 19:12    [21747821]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Beltar
Member

Откуда:
Сообщений: 146
Насколько я понимаю, со словарями, или даже со строками может быстро работать и Java. И вообще любое г. даже если оно имеет доступ к API через 10 прокладок. Просто потому, что обработать 100000 строк по 1000000 символов в цикле может вообще никаких вызовов API не потребовать. А в целочисленной арифметике 64-хбитные компиляторы вроде практически одинаковы, у Delphi даже чуть быстрее прочих.

автор
Ты не понял. Какой смысл от "скрытия" если это скрытие легко проявляется при обращении к родителю?


Ну хотя бы тот, что обращение к родителю случайно не сделаешь. И конкретно у меня, проблема возникла в том, что я как раз хотел привести к общему знаменателю 2 компонента, чтобы в одном приложении работать с ними хотя бы в 95% случаев единообразно через общего родителя. Но они могут быть и не оба сразу, и тогда необходимости дергать родителя нет, а значит и фигни меньше торчит.

Возможность убрать проблему в 50% случаев лучше невозможности сделать это вообще.

Точно так же отмененные в 10.3 управляемые структуры не появились в Delphi еще 10-15 лет назад только потому, что это в плюсах невозможно просто скопировать класс, если в нем есть хотя бы строка, и надо конструктор копирования делать, а в Delphi с полностью управляемыми строками любая структура в которой только числа и строки будет копироваться нормально, а это, наверное, 99% всех структур. Не 100%, но достаточно, чтобы низвести проблему до не слишком существенной.
29 ноя 18, 09:58    [21748099]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 5972
Beltar
...Точно так же отмененные в 10.3 управляемые структуры не появились в Delphi еще 10-15 лет назад только потому, что это в плюсах невозможно просто скопировать класс, если в нем есть хотя бы строка, и надо конструктор копирования делать, а в Delphi с полностью управляемыми строками любая структура в которой только числа и строки будет копироваться нормально, а это, наверное, 99% всех структур. Не 100%, но достаточно, чтобы низвести проблему до не слишком существенной.
Врешь.
https://ideone.com/fTmVo0
29 ноя 18, 10:14    [21748119]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Василий 2
Member

Откуда:
Сообщений: 309
_Vasilisk_
Как костыль
class procedure Foo<T>; static;

Да, знаю, но это всё же костыль.
29 ноя 18, 10:48    [21748170]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24623
Siemargl
Beltar
...Точно так же отмененные в 10.3 управляемые структуры не появились в Delphi еще 10-15 лет назад только потому, что это в плюсах невозможно просто скопировать класс, если в нем есть хотя бы строка, и надо конструктор копирования делать, а в Delphi с полностью управляемыми строками любая структура в которой только числа и строки будет копироваться нормально, а это, наверное, 99% всех структур. Не 100%, но достаточно, чтобы низвести проблему до не слишком существенной.
Врешь.
https://ideone.com/fTmVo0

Что там? Ссылка на объект присваивается другой ссылке?
29 ноя 18, 11:06    [21748204]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Beltar
Member

Откуда:
Сообщений: 146
В чем вру? Что если в структуру входит ссылка на класс, то и скопирована будет именно ссылка? Или std::string теперь нормальный строковый тип, а не класс?

Попробовал расшифровать (как вообще на этом можно писать...):
Создаем экземпляр a класса A с текстовым полем.
Присваиваем экземпляру b значение a.
Выводим текстовое поле экземпляра b.

Разумеется выведет ту же самую строку, с которой создали a. Что будет если мы поменяем строку у a? Предсказываю, она изменится и в b.

А что будет тут?

TMyObject=class
S:String;
end

TRec=record
a:Int32;
b:String;
o:TMyObject;
end;

var r1,r2:TRec;
begin
r1.S:='S1';
r1.o:=TMyObject.Create;
r1.o.S:='OS1';
r2:=r1;
r1.S:='S2'
r1.o.S:='OS2';
end;


Чему равны r2.S и r2.o.S?
29 ноя 18, 11:08    [21748205]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
alekcvp
Member

Откуда:
Сообщений: 1205
Beltar
TRec=record
a:Int32;
b:String;
o:TMyObject;
end;

Чему равны r2.S и r2.o.S?


А действительно, чему будет равно r2.S?..
29 ноя 18, 11:22    [21748234]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3600
Beltar,

просто конструктор копирования для структур в дельфи делается автоматом
вернее там одна проца в которую адреса и ссылка на RTTI структуры передаются
и это гораздо медленнее чем спец-конструктор
29 ноя 18, 11:42    [21748294]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12559
X-Cite
L_argo
пропущено...
Это какие современные популярные языки имеют высокую производительность (кроме с/с++) ?

Заявлено что .Net Core быстрый... Я проверял работу со списками и словарями, быстрее чем Delphi под win


Не менее важна быстрая работа графического интерфейса. Быстрый отклик. Быстрая загрузка форм, таблиц и т.д.
А то, что цикл на одном языке выполнятся на 3% быстрее, чем не другом - это уже не так важно.
29 ноя 18, 11:49    [21748316]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Гирлионайльдо
Member

Откуда:
Сообщений: 318
Можно заинжектить приложение А в приложение Б и управлять приложением Б имея её память в карманные дыры
29 ноя 18, 11:57    [21748339]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3600
Гирлионайльдо,


Ссылка на позицию в клипе: https://youtu.be/FGWptuytOL8?t=1
29 ноя 18, 12:21    [21748389]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Гирлионайльдо
Member

Откуда:
Сообщений: 318
kealon(Ruslan),

Всё программируешь?
- Агя!!!!
Делом займись!!! Из за тебя заводы простаивают, и экономика страны падает
- АЙяАА!!!
29 ноя 18, 12:36    [21748410]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Beltar
Member

Откуда:
Сообщений: 146
автор
А действительно, чему будет равно r2.S?..


Делайте ваши ставки. Х)

автор
просто конструктор копирования для структур в дельфи делается автоматом
вернее там одна проца в которую адреса и ссылка на RTTI структуры передаются
и это гораздо медленнее чем спец-конструктор


ЕМНИП RTTI появляется только у TPersistent.

Для структуры никакого RTTI нафиг не надо, просто потому, что компилятор по факту определения структуры знает, где в ней, например, строка и может вставить автоматически код, чтобы эта строка была скопирована. А копирование строк в Delphi вообще-то очень ленивое и выполняется через счетчик ссылок на строку с фактическим копированием в новую строчку только если одна из переменных, ссылающихся на строку поменяется.

В моем примере это произойдет здесь
r1.S:='S2';
Очевидно, что подобное может вообще никогда не произойти, делая саму постановку вопроса о скорости работа конструктора копирования бессмысленной. Метод в целом может быть быстрым, если нам не пришлось создавать новую строчку, а может медленным, если пришлось.

А как вы подобное сделаете в плюсах я что-то не очень понимаю, надо будет прописывать в новую строчку вполне реальное копирование, которое будет всегда. Т. е. всегда медленно. Либо руками аналог счетчика ссылок делать, что абсурд.
29 ноя 18, 13:57    [21748559]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
alekcvp
Member

Откуда:
Сообщений: 1205
Beltar
В моем примере это произойдет здесь
r1.S:='S2';

Не произойдёт. У r1 нет поля S...
29 ноя 18, 14:42    [21748642]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Beltar
Member

Откуда:
Сообщений: 146
Так и скажи, что там опечатка, должно быть:

TRec=record
a:Int32;
S:String;
o:TMyObject;
end;
29 ноя 18, 14:55    [21748673]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 5972
Beltar,

ну если ты не понимаешь, как оно работает, зачем что то голословно заявлять?

Выучи дельфи сначала.

И в С++ и в Дельфе будет работать как правильно, а не как ты себе надумал...

В разных языках разные реализации строк - есть иммутабельные, есть COW, а есть простые как тапок.
И у каждой реализации есть свои преимущества и недостатки для разных стратегий использования.
Идеала нет.
29 ноя 18, 16:37    [21748863]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 5972
FPC
https://ideone.com/yj9pmB

Там есть кнопочка fork - можно экспериментировать
29 ноя 18, 16:51    [21748879]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3600
Beltar
автор
А действительно, чему будет равно r2.S?..


Делайте ваши ставки. Х)

автор
просто конструктор копирования для структур в дельфи делается автоматом
вернее там одна проца в которую адреса и ссылка на RTTI структуры передаются
и это гораздо медленнее чем спец-конструктор


ЕМНИП RTTI появляется только у TPersistent.

Для структуры никакого RTTI нафиг не надо, просто потому, что компилятор по факту определения структуры знает, где в ней, например, строка и может вставить автоматически код, чтобы эта строка была скопирована. А копирование строк в Delphi вообще-то очень ленивое и выполняется через счетчик ссылок на строку с фактическим копированием в новую строчку только если одна из переменных, ссылающихся на строку поменяется.

В моем примере это произойдет здесь
r1.S:='S2';
Очевидно, что подобное может вообще никогда не произойти, делая саму постановку вопроса о скорости работа конструктора копирования бессмысленной. Метод в целом может быть быстрым, если нам не пришлось создавать новую строчку, а может медленным, если пришлось.

А как вы подобное сделаете в плюсах я что-то не очень понимаю, надо будет прописывать в новую строчку вполне реальное копирование, которое будет всегда. Т. е. всегда медленно. Либо руками аналог счетчика ссылок делать, что абсурд.

я тебе просто вот это покажу
+
procedure CopyRecord(Dest, Source, TypeInfo: Pointer);
{$IFDEF PUREPASCAL}
begin
  _CopyRecord(Dest, Source, TypeInfo);
end;
{$ELSE !PUREPASCAL}
{$IFDEF CPUX86}
asm
        JMP     _CopyRecord
end;
{$ENDIF CPUX86}
{$ENDIF !PUREPASCAL}


К сообщению приложен файл. Размер - 11Kb
29 ноя 18, 17:49    [21748926]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Sapersky
Member

Откуда:
Сообщений: 33
Вложенные классы не генерируют "внутреннюю RTTI", которая используется для обработки managed-типов.
TRec = record // size =  12
  0..3: <unknown>;
  4: String;
  8..11: <unknown>; // <- это класс
end;
Надо заменить на object или record.
TRec = record // size =  12
  0..3: <unknown>;
  4: String;
  8: TMyObject = record // size =  4
    0: String;
  end;
end;
29 ноя 18, 17:54    [21748934]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Sapersky
Member

Откуда:
Сообщений: 33
Т.е. "компилятор знает" подразумевает некую структуру данных - вот это и есть внутренняя RTTI.
Ну или можно назвать TypeInfo, 3-й параметр CopyRecord.
29 ноя 18, 18:06    [21748956]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
vavan
Member

Откуда: Казань
Сообщений: 3194
Beltar
в плюсах невозможно просто скопировать класс, если в нем есть хотя бы строка, и надо конструктор копирования делать
мощно задвинул. по факту же нужно приложить определенные усилия чтобы помешать компайлеру нагенерить кучку дифолтных методов в плюсах (если они по смыслу оказываются нужны)
Beltar
std::string теперь нормальный строковый тип, а не класс?
класс. а что выше под строкой имелось в виду?
29 ноя 18, 18:43    [21749002]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 226
Beltar
В чем вру? Что если в структуру входит ссылка на класс, то и скопирована будет именно ссылка? Или std::string теперь нормальный строковый тип, а не класс?

Попробовал расшифровать (как вообще на этом можно писать...):
Создаем экземпляр a класса A с текстовым полем.
Присваиваем экземпляру b значение a.
Выводим текстовое поле экземпляра b.

Разумеется выведет ту же самую строку, с которой создали a. Что будет если мы поменяем строку у a? Предсказываю, она изменится и в b.

А что будет тут?

TMyObject=class
S:String;
end

TRec=record
a:Int32;
b:String;
o:TMyObject;
end;

var r1,r2:TRec;
begin
r1.S:='S1';
r1.o:=TMyObject.Create;
r1.o.S:='OS1';
r2:=r1;
r1.S:='S2'
r1.o.S:='OS2';
end;


Чему равны r2.S и r2.o.S?


struct  S
{
	int i;
	std::string s;
};


int main()
{

	S s1 { 1, "Вася" };
	S s2 = s1;
	s2.s = "Петя";

	std::cout << s1.i << " " << s1.s << endl;
	std::cout << s2.i << " " << s2.s << endl;



К сообщению приложен файл. Размер - 1Kb
29 ноя 18, 21:25    [21749116]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1203
Для тех кто не зарегистрирован в QC. Список фиксов.
http://docwiki.embarcadero.com/RADStudio/Rio/en/New_features_and_customer_reported_issues_fixed_in_RAD_Studio_10.3#List_of_publicly_reported_bugs_fixed_in_10.3
1 дек 18, 00:58    [21750871]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12559
Вместо того, чтобы исправить баги, они рекламируют IDE Fix Pack
https://community.idera.com/developer-tools/b/blog/posts/performance-and-quality-in-the-rad-studio-10-3-ide
1 дек 18, 10:12    [21750915]     Ответить | Цитировать Сообщить модератору
 Re: RAD Studio 10.3 Rio  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 688
По такому принципу закрываются некоторые баги:

Sync status from internal system, internal issue closed on Sep 28, 2018 by Yevhen Dumych with comment:
No response from customer
1 дек 18, 10:22    [21750917]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 6 7 8 9 10 [11] 12 13 14 15 .. 20   вперед  Ctrl
Все форумы / Delphi Ответить