Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Embarcadero RAD Studio XE2 (Pulsar)

Автор: SolidSnakeRU
Дата сообщения: 16.09.2011 18:02
Есть еще "атрибуты" свойств и методов, которые можно применять.
Они были и раньше, но думаю мало кто знает про них)
Автор: druff
Дата сообщения: 16.09.2011 19:50
mcka
http://stackoverflow.com/questions/6187018/abstract-class-in-delphi
Автор: Eternal_Shield
Дата сообщения: 17.09.2011 16:13
mcka

Код:
TDSCustomServer = class abstract(TComponent)
Автор: druff
Дата сообщения: 18.09.2011 11:08

Цитата:
TDSCustomServer должен быть родителем и не должен создаваться (да и не получится, привет Abstract error)

Насколько я знаю - ошибки не будет. Максимум компилятор выдаст Warning о создании экземпляра класса с абстрактными методами.

Добавлено:
только не ясно зачем они уже минимум лет пять пишут в справке "If a class is marked abstract, then it cannot be instantiated directly using the Create constructor."
Автор: Frodo_Torbins
Дата сообщения: 18.09.2011 13:52
druff
Да, сейчас это реально не работает. Но никто не знает, что будет в следующей версии компилятора.
Автор: Sulphide
Дата сообщения: 18.09.2011 16:21
Очень и очень разочаровал 64х битный компилятор дельфи... пример хоть и бредовый но наглядный:

procedure start;
var y,z:double;
i,x:integer;
t:Cardinal;
begin
write('Input X: ');
readln(x);
t:=GetTickCount;
for i := 1 to 1000000 do begin
y:=i+(x/2);
z:=sin(sqr(y*3));
end;
t:=(GetTickCount-t);
Writeln(t);
Writeln(z);
readln;
end;

32х битный компилятор дельфи генерирует неплохой код с минимумом записей в память, итог в среднем 47 мс на выполнение этого кода. 64х битный компилятор freepascal - теже 47 мс. аналог на vs с++: 47 мс для х32 и 93мс для х64. Теперь внимание х64 компилятор дельфи - 2.8 секунды - это почти в 60 раз медленнее чем х64 код на фрипаскале!!! ужас. для примера в ридл можно ввести любое целое число, разницы нет. при просмотре дизасма - ниодин из компиляторов не развернул цикл, не мухлевал, тоесть все было честно, для всех компиляторов включались максимальные оптимизации на скорость, все проверки отключались, компилировались релиз версии, но х64 компилятор дельфи после буквально каждого изменения любой переменной тут же пишет ее в память... особенно порадовала фишка типа пишем переменную в память и тут же читаем ее обратно в этот же самый регистр... жесть.

зы проц - Phenom II 3.5 Ггц.
Автор: spasius
Дата сообщения: 18.09.2011 17:21
program start;
{$APPTYPE CONSOLE}
uses windows;
var y,z:double;
i,x:integer;
t:Cardinal;
begin
write('Input X: ');
readln(x);
t := GetTickCount;
for i := 1 to 1000000 do //begin (оптимизация)
//y:=i+(x/2);
z := sin(sqr((i+(x/2))*3));
//end; (оптимизация)
t := (GetTickCount-t);
Writeln(t);
Writeln(z);
readln;
end.

максимум 109 мс
Автор: Sulphide
Дата сообщения: 18.09.2011 19:24
spasius понятно, что можно все вручную оптимизировать, но не всегда и не везде, а здесь я привел прямое сравнение с другими компиляторами и грубо говоря компилятор дельфи х64 даже не сравнится с компилятором оного же х32 по способам оптимизации... тоесть присваивая что либо любой переменной надо иметь ввиду что там точно будет что то типа move [x], x .. не зависимо от того, что эта переменная уже на следующем шаге и дальше не будет использоваться.

зы а что если нам нужны промежуточные данные из Y?! тогда все возвращается опять на свои места.
Автор: tank0
Дата сообщения: 18.09.2011 20:39
Anyone knows whether XE2 supports the alignment of static variables?

This is request by SSE and SSE2 for 16byte alignment.

Ru:

Любой знает, XE2 поддерживает выравнивание статические переменные?

Это просьбу SSE и SSE2 для 16byte выравнивания.
Автор: spasius
Дата сообщения: 18.09.2011 22:45
Sulphide
в таком случае берем тaлмут по XE2 и пишем по правилам ... NativeInt ... etc
а уж если нужна производительность в определенном месте ... берем asm и нужные регистры
для 32-бит eax, ebx, ecx ...
и для 64-бит соответственно rax, rbx, rcx ...
ну и конечно не забываем про отличие сбороки debug от release
Автор: druff
Дата сообщения: 19.09.2011 08:48
Sulphide
Синтетический тест это хорошо.. А если сравнить производительность реальных приложений?
Автор: Frodo_Torbins
Дата сообщения: 19.09.2011 13:34
Sulphide
Откройте для себя delphifeeds.com:
http://delphitools.info/2011/09/02/first-look-at-xe2-floating-point-performance/
http://delphitools.info/2011/09/05/xe2-single-precision-floating-point-disappointment/

tank0
It is the default alignment for x64 target.
Автор: Sulphide
Дата сообщения: 19.09.2011 16:19
Frodo_Torbins
Спасибо, не знал. проблема только в том что ни {$O+} ни {$EXCESSPRECISION OFF} ровным счетом ничего не дают конкретно для этого примера. Значит все же проблема компилятора.
Автор: ppkp
Дата сообщения: 19.09.2011 18:34
Если у кого стоит XE2 под WinXP SP3 и нормально работает Project->Options, отпишитесь, пожалуйста. У меня вылетает сообщение "out of memory" при вызове этого диалога. На Win7x64 все нормально. Что тут может быть?
Автор: tank0
Дата сообщения: 19.09.2011 20:25
ppkp


My VM is winxp sp3 32bit, and XE2 works well.
If you have plugins for IDE, you can try to uninstall them.

Ru:
Моя виртуальная машина WinXP SP3 32bit, и XE2 работает хорошо.
Если у вас есть плагины для IDE, вы можете попробовать удалить их.
Автор: Frodo_Torbins
Дата сообщения: 19.09.2011 21:16
Sulphide
Да, для примера не дают, а для реального приложения?
Автор: deks
Дата сообщения: 19.09.2011 22:28
Frodo_Torbins

Ну например тут граждане страдали тестами производительности:

_http://www.da-soft.com/blogs/anydac-for-delphi-and-rad-studio-xe2.html
Автор: Sulphide
Дата сообщения: 19.09.2011 22:49
Frodo_Torbins А в реальном приложении могут быть такие же подставы, причем найти их будет в разы сложнее и никто от этого не застрахован, особенно если будет много вложенных вызовов процедур и функций + треды + вложенные циклы. И это явный баг компилятора, если уж 3 сравниваемых нормально справились с этим примером. Вот кстати дизасм, можно сравнить как FP делает все очень элегантно и как тупо в лоб компилирует дельфи (само тело цикла):

FreePascal: минимум записей в память, минимум преобразований, синус считается красиво, переменная цикла находится в регистре

.text:00000001000016A8 loc_1000016A8:
.text:00000001000016A8 inc eax
.text:00000001000016AA cvtsi2sd xmm1, eax
.text:00000001000016AE movsd xmm0, qword ptr [rbp-10h]
.text:00000001000016B3 divsd xmm0, cs:qword_10002E3B0
.text:00000001000016BB addsd xmm0, xmm1
.text:00000001000016BF movsd xmm8, xmm0
.text:00000001000016C4 movsd xmm0, xmm8
.text:00000001000016C9 mulsd xmm0, cs:qword_10002E3B8
.text:00000001000016D1 mulsd xmm0, xmm0
.text:00000001000016D5 movsd qword ptr [rbp-88h], xmm0
.text:00000001000016DD fld qword ptr [rbp-88h]
.text:00000001000016E3 fsin
.text:00000001000016E5 fstp qword ptr [rbp-88h]
.text:00000001000016EB movsd xmm0, qword ptr [rbp-88h]
.text:00000001000016F3 movsd xmm9, xmm0
.text:00000001000016F8 cmp eax, 0F4240h
.text:00000001000016FD jl short loc_1000016A8

теперь тоже самое дельфи:

.text:00000000004101D9 loc_4101D9:
.text:00000000004101D9 cvtsi2sd xmm0, cs:qword_418CE8
.text:00000000004101E2 movsd xmm1, cs:qword_418CF0
.text:00000000004101EA divsd xmm1, cs:qword_4102C8
.text:00000000004101F2 addsd xmm0, xmm1
.text:00000000004101F6 movsd cs:qword_418CD8, xmm0 ; эта и следующая строка - ну просто шедевр оптимизации
.text:00000000004101FE movsd xmm0, cs:qword_418CD8
.text:0000000000410206 mulsd xmm0, cs:qword_4102D0
.text:000000000041020E movapd xmm1, xmm0
.text:0000000000410212 mulsd xmm1, xmm0
.text:0000000000410216 movapd xmm0, xmm1
.text:000000000041021A call sub_405E50 ;процедура расчета синуса на sse2 ну просто нереально гиганская
.text:000000000041021F movsd cs:qword_418CE0, xmm0
.text:0000000000410227 add cs:qword_418CE8, 1 ;цикловая переменная в памяти
.text:000000000041022F cmp cs:qword_418CE8, 0F4241h
.text:000000000041023A jnz short loc_4101D9

каждый думаю сам в состоянии сделать выводы из всего этого *)
Автор: DmitryB2005
Дата сообщения: 20.09.2011 00:51
Привет народ!
Что то эмбаркадеровцы уже и инсталятор слепить толком не могут...
Вот скачанный из раздела варез триальный образ с офф. сайта(http://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso)
при запуске установщика вылетает с ошибкой в консоли такой:
"Program too big to fit in memory" и чего ему 3,32 Гб оперативной памяти мало?
Есть какие то соображения у Вас?
Да, ставил на Win 7 Sp1 32Bit Ultimate.
Автор: ItsJustMe
Дата сообщения: 20.09.2011 01:13
Sulphide
Впрочем, и у FP есть непонятки - непонятно, зачем ему xmm8 и xmm9 понадобились? Да и "фирменный стиль" также присутствует

Код: movsd xmm8, xmm0
movsd xmm0, xmm8
Автор: Samogonwik
Дата сообщения: 20.09.2011 09:07
Вчера пробовал поставить EhLIB и FIBPlus - наткнулся на несколько приколов: поменяли некоторые процедуры, точнее типы данных (с Integer на NativeInt), поменяли синтаксис поинтеров, + ещё куча мелких приколов. Исходя из всего прочитанного, сделал для себя вывод: надо ждать SP2, если даже не третий...
Автор: anoubis
Дата сообщения: 21.09.2011 02:07

Цитата:
Sulphide


запустил Ваш пример на своем компе:

для x32 - 47 мс, а для x64 на много больше....?!

конфиг: win7 x64 макс. CPU Q9400. память 8 gb.







Автор: Sulphide
Дата сообщения: 21.09.2011 16:25
anoubis
а сколько у вас вышло? у меня 2.8 секунды для х64. для х32 да 47 мс. на феноме х4, 3.5ггц, win 7 x64
Автор: whitewolfs
Дата сообщения: 22.09.2011 04:10
Samogonwik так а чем SP2 поможет с тем же NativeInt? Надо ждать обновления компонент.
Автор: LG Team
Дата сообщения: 22.09.2011 11:40
Sulphide

хм, у меня 32 - 62мс, 64 - 2106

win 7 x64, i7-2600, 3.4gz, 4 гига
Автор: KillianRB
Дата сообщения: 22.09.2011 11:55
Глюкобагов, конечно, море
Вот только-что столкнулся - если включить с свойствах проекта использование тем и подключить любую, взамен стандартной Виндовой, то на кнопках перестает работать WordWrap.
Особенно печально выглядит, если выставить стиль кнопки в bsSplitButton - текст налезает на стрелочку.
Тут не то, что SP1 ждать - тут срочные хотфиксы нужны!
Автор: DmitryB2005
Дата сообщения: 22.09.2011 12:14
А у меня вообще не ставится ни на ХР СП3 ни на Вин 7 х 32-Бит,
постоянно выдает сообщение при запуске инсталла из образа, о нем я уже и в саппорт к ним стучал и тут докладывал. В поддержке предлогают качать по новой исо-образ от туда же, откуда я его и так уже качал. Одним словом, что то наши "молодцы" совсем "испортились"...
Автор: deks
Дата сообщения: 22.09.2011 12:58
DmitryB2005


Я ставил XE2 3 раза на разные машины - везде Win7, x64. Ни разу не было проблем! Да, при смене mac-адреса в VM слетела активация, но это ожидаемо) Так что у вас какая-то проблема! Может, прокси не докачивает образ, или чего ещё.. попробуйте web-install
Автор: Frodo_Torbins
Дата сообщения: 22.09.2011 16:32
Продолжение истории про оптимизацию: http://delphitools.info/2011/09/22/delphi-xe2-64bit-bottleneck-in-trigonometric-functions/ Если кратко, то 64-битный компилятор выдает правильные значения синусов и косинусов даже для очень больших значений угла, а не мусор, как компиляторы использующие FPU. Единственная проблема в том, что это не отключается.
Кому интересно, может проверить: Sin(1e22) = -0,8522.
Автор: Sulphide
Дата сообщения: 22.09.2011 18:17
Frodo_Torbins
вот так вот я с первого раза нашел узкое место в х64 компиляторе =)) да там действительно очень большая процедурка расчета синуса с переходами, вызовами других процедур с кучей записей в память и прочим, хотя если честно можно было бы сделать опцией.

зы я им там отписался, наверное после этого провели расследование:D
зыы вот так кстати не сильно насилуя компилятор будет честнее и уже на феноме 3.5ггц получается 62мс:

program Project1;
{$APPTYPE CONSOLE}
{$R *.res}

uses
Windows;

{$O+}
{$EXCESSPRECISION OFF}

var
y, z: double;
i, zt :nativeint;
x: double;
t: nativeuint;

begin
x := 10;
t := GetTickCount;
for i := 1 to 1000000 do
begin
y := i + (x / 2);
zt := trunc((sqr(y * 3))) and $1ff;
z := sin(zt);
end;
t := (GetTickCount - t);
Writeln(t);
Writeln(z);
Writeln(y);
readln;

end.

действительно неплохо. правда msvc++ здесь же выдает уже 15мс. а fp все те же 47мс. правда одинаковые результаты дают только фп и дельфи... кстати калькулятор в 7ке х64 судя по всему sin 1e22 считает не верно))

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738

Предыдущая тема: Как сделать offline версию сайта со встроенным браузером?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.