Конференция "Прочее" » Скорость и "битность"
 
  • QAZ © (11.09.17 13:20) [0]
    Сделал небольшой нуботест по скорости работы со строками
    и выяснилось что скомпиленый в х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]

    я чо, я ничо, был бы умным не спрошал бы
  • tesseract © (04.10.17 02:04) [19]
    >>все ядро работы со строками в систем, 90% кода всех программ - работа со строками

    Неправильно построенная система. Даже pcre работает только с указателями.
 
Конференция "Прочее" » Скорость и "битность"
Есть новые Нет новых   [87919   +42][b:0.001][p:0.005]