Конференция "Прочее" » Скорость и "битность"
 
  • dmk © (06.10.17 22:31) [20]
    Даже не знаю что сказать. Работаю с векторами под x64 Delphi XE6.
    Double немного медленнее чем Single, а в остальном оптимизация ручками дает прекрасный результат. Оптимизация в Delphi не очень. Ее почти нет :(
  • kilkennycat © (06.10.17 22:42) [21]

    > Ее почти нет :(

    иногда это хорошо.
  • dmk © (07.10.17 12:09) [22]
    А вообще жесть, а не код. Прибавлять строку в цикле не самая лучшая идея.
    В этом случае используется менеджер памяти Delphi, что тормозит процесс.
    Поставьте размер строки сразу на максимум.

    Ваш код – x32: 333 миллисекунды,
    мой – x32: 78 мс, x64: 109 мс.

    program AnsiStr;

    {$APPTYPE CONSOLE}

    {$R *.res}

    uses
     System.SysUtils, Winapi.Windows;

    var
    A: AnsiString;
    T, X: DWord;
    i, j: Integer;

    begin
     try
       { TODO -oUser -cConsole Main : Insert code here }

     A := 'This is a test';
     T := GetTickCount;
     SetLength(A, 250);

     for i := 0 to 99999 do
       for j := 0 to 249 do A[j] := #32;

     X := (GetTickCount - T);
     Writeln('Ansistring = ', X);
     Readln;

     except
       on E: Exception do
         Writeln(E.ClassName, ': ', E.Message);
     end;
    end.
  • Sha © (07.10.17 19:40) [23]
    > dmk ©   (07.10.17 12:09) [22]
    > А вообще жесть, а не код.

    У тебя тоже жесть )

    После SetLength строка стала уникальной.
    Зачем после этого делать ее уникальной еще 250*100000 раз?
  • dmk © (07.10.17 22:26) [24]
    >Зачем после этого делать ее уникальной еще 250*100000 раз?
    Мне не надо. Это у автора надо спросить.
    Я просто слегка оптимизировал код.
  • QAZ © (08.10.17 11:32) [25]
    эммм...
    мой тест, это тест, на самую частую операцию со строками - конкатенацию
    очевидно что вместо пробела может быть любая строка....
    и собственно изначально это отчасти сравнение внутреннего МП с внешним, для WideString
    за счет замены внутренего кода в самой делфи, разница между делфи7 и например ХЕ3 примерно в 10 раз для анси, в 4,5 для шорт и в 1,5 для видестрингов в пользу ХЕ3

    250*100000 раз именно для того чтоб влезть в диапазон шортстринг и обеспечить идентичность теста для всех версий строк

    однако именно в х64 варианте по всем вариантам падение до 3х раз, только widestring чуть быстрей чем в х32 за счет того что управляется виндой
  • QAZ © (08.10.17 11:41) [26]

    > tesseract ©   (04.10.17 02:04) [19]
    > Неправильно построенная система. Даже pcre работает только с указателями.

    эмм.. под систем я подразумевал system.pas, странно что это не очевидно, однако в плане х32 там есть огромный прорыв с 2007 версии
    pcre написан на С без плюсов, с чем ему еще работать как не с указателями?
  • Sha © (08.10.17 12:53) [27]
    > QAZ ©   (08.10.17 11:32) [25]
    > за счет замены внутренего кода в самой делфи, разница между делфи7 и например ХЕ3
    > примерно в 10 раз для анси, в 4,5 для шорт и в 1,5 для видестрингов в пользу ХЕ3

    разница будет поменьше, если в D7 тоже использовать FastMM4
  • QAZ © (08.10.17 13:46) [28]

    > Sha ©   (08.10.17 12:53) [27]

    дело не в менеджере, а в move и прочих функциях из проекта fastcode заменивших старые дельфийские
  • Sha © (08.10.17 16:42) [29]
    одно другому помогает
 
Конференция "Прочее" » Скорость и "битность"
Есть новые Нет новых   [118654   +12][b:0][p:0]