Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Скорость и "битность"


QAZ ©   (11.09.17 13:20

Сделал небольшой нуботест по скорости работы со строками
и выяснилось что скомпиленый в х64 работает в 2.5 раза медленней чем х32
это нормально???
тестил на ХЕ3 и "берлине" с {$DEFINE PUREPASCAL} и без

program Project1;
{$DEFINE PUREPASCAL}
{$APPTYPE CONSOLE}

uses
 windows;

var
 a:ansistring;
 r:rawbytestring;
 u:unicodestring;
 w:widestring;
 s:shortstring;

 i,j,x,t:cardinal;
begin

   s:='This is a test';
   t:=GetTickCount;
   for i:=0 to 100000 do begin
     s:=' ';
     for j := 0 to 250 do begin
      s:=s+' ';
     end;
   end;
   x:= GetTickCount-t;
   writeln('shortstring=',x);

   a:='This is a test';
   t:=GetTickCount;
   for i:=0 to 100000 do begin
     a:=' ';
     for j := 0 to 250 do begin
      a:=a+' ';
     end;
   end;
   x:= GetTickCount-t;
   writeln('ansistring=',x);

   r:='This is a test';
   t:=GetTickCount;
   for i:=0 to 100000 do begin
     r:=' ';
     for j := 0 to 250 do begin
      r:=r+' ';
     end;
   end;
   x:= GetTickCount-t;
   writeln('rawbytestring=',x);

   u:='This is a test';
   t:=GetTickCount;
   for i:=0 to 100000 do begin
     u:=' ';
     for j := 0 to 250 do begin
      u:=u+' ';
     end;
   end;
   x:= GetTickCount-t;
   writeln('unicodestring=',x);

   w:='This is a test';
   t:=GetTickCount;
   for i:=0 to 100000 do begin
     w:=' ';
     for j := 0 to 250 do begin
      w:=w+' ';
     end;
   end;
   x:= GetTickCount-t;
   writeln('widestring=',x);

   Readln;
end.


DayGaykin ©   (11.09.17 13:26[1]

Замени, для начала, Cardinal на NativeUInt


QAZ ©   (11.09.17 13:40[2]


> DayGaykin ©   (11.09.17 13:26) [1]

ничего не изменилось, что было очевидно


Eraser ©   (11.09.17 14:23[3]


> QAZ ©   (11.09.17 13:20) 

у Делфи это нормально.
там где так уж нужна и важна оптимизация надо использовать другой инструмент.


QAZ ©   (11.09.17 14:37[4]


> Eraser ©   (11.09.17 14:23) [3]

возникла гениальная(да я такой) мысль
а ведь изменение {$DEFINE PUREPASCAL} не касается уже скомпиленых модулей?
а System не перекомпиливается же и по умолчанию там вся х32 на асамблерных вставках скомпилена, потому и быстрей?
не?


rrrrrrr ©   (11.09.17 15:07[5]

не касается уже скомпиленых модулей?

касается, если билд. и если "там" твои дефайны видны.
но они же не видны;


rrrrrrr ©   (11.09.17 15:09[6]

... и если конечно вообще пас пристутствует.


QAZ ©   (11.09.17 16:59[7]


> там где так уж нужна и важна оптимизация надо использовать
> другой инструмент.

в лазарусе между битностью разница небольшая, но тормозней чем дельфи х64


Eraser ©   (11.09.17 17:44[8]


> QAZ ©   (11.09.17 14:37) [4]

беда в том, что код x32 тоже тормозной для задач, где действительно нужна скорость/оптимизация и, тем более, различные SSEx современных процессоров за последние 20 лет.


QAZ ©   (11.09.17 18:09[9]


> Eraser ©   (11.09.17 17:44) [8]

sse3 уже в 2007м делфи был
в нее же был включен код с проекта fastcode


QAZ ©   (11.09.17 18:25[10]


> rrrrrrr ©   (11.09.17 15:09) [6]

пас system присутствует, но в этих версиях никогда не компилится, даже если удалить dcu, даже не пытается, юзается только для отладки


Dimka Maslov ©   (11.09.17 19:18[11]

Если взять C++, то там 64-битное приложение выполяется на 15-20% быстрее, нежели точно такое же, но 32-битное.


rrrrrr ©   (11.09.17 19:48[12]

так я и не про сустем конкретно.
если пасы в library path
то будет компиляция


rrrrrr ©   (11.09.17 19:51[13]

плюс эти пасы могут быть в пакете и даже если нету дцу и нету пасов (или они есть) то может линковаться весь пакет через дцу самого пакета


QAZ ©   (11.09.17 19:57[14]


> rrrrrr ©   (11.09.17 19:48) [12]

все ядро работы со строками в систем, 90% кода всех программ - работа со строками
систем не перекомпилируется
так понятней?


QAZ ©   (11.09.17 19:58[15]


> Dimka Maslov ©   (11.09.17 19:18) [11]

скинь похожий нубокод для ВС ?


Дмитрий Белькевич ©   (12.09.17 22:06[16]


> 90% кода всех программ - работа со строками


Очень сильное и, к тому же, неверное заявление. Программы бывают разные.


Rouse_ ©   (12.09.17 22:58[17]

Вещи говорите правильные, но глупости выводите несуразные, вроде взрослые люди, на асм выхлоп могут глянуть компилера и выводы сделать, ан нет


QAZ ©   (14.09.17 20:02[18]


> Rouse_ ©   (12.09.17 22:58) [17]

я чо, я ничо, был бы умным не спрошал бы


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо