-
Даже не знаю что сказать. Работаю с векторами под x64 Delphi XE6. Double немного медленнее чем Single, а в остальном оптимизация ручками дает прекрасный результат. Оптимизация в Delphi не очень. Ее почти нет :(
-
> Ее почти нет :(
иногда это хорошо.
-
А вообще жесть, а не код. Прибавлять строку в цикле не самая лучшая идея. В этом случае используется менеджер памяти 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.
-
> dmk © (07.10.17 12:09) [22] > А вообще жесть, а не код.
У тебя тоже жесть )
После SetLength строка стала уникальной. Зачем после этого делать ее уникальной еще 250*100000 раз?
-
>Зачем после этого делать ее уникальной еще 250*100000 раз? Мне не надо. Это у автора надо спросить. Я просто слегка оптимизировал код.
-
эммм... мой тест, это тест, на самую частую операцию со строками - конкатенацию очевидно что вместо пробела может быть любая строка.... и собственно изначально это отчасти сравнение внутреннего МП с внешним, для WideString за счет замены внутренего кода в самой делфи, разница между делфи7 и например ХЕ3 примерно в 10 раз для анси, в 4,5 для шорт и в 1,5 для видестрингов в пользу ХЕ3
250*100000 раз именно для того чтоб влезть в диапазон шортстринг и обеспечить идентичность теста для всех версий строк
однако именно в х64 варианте по всем вариантам падение до 3х раз, только widestring чуть быстрей чем в х32 за счет того что управляется виндой
-
> tesseract © (04.10.17 02:04) [19] > Неправильно построенная система. Даже pcre работает только с указателями.
эмм.. под систем я подразумевал system.pas, странно что это не очевидно, однако в плане х32 там есть огромный прорыв с 2007 версии pcre написан на С без плюсов, с чем ему еще работать как не с указателями?
-
> QAZ © (08.10.17 11:32) [25] > за счет замены внутренего кода в самой делфи, разница между делфи7 и например ХЕ3 > примерно в 10 раз для анси, в 4,5 для шорт и в 1,5 для видестрингов в пользу ХЕ3
разница будет поменьше, если в D7 тоже использовать FastMM4
-
> Sha © (08.10.17 12:53) [27]
дело не в менеджере, а в move и прочих функциях из проекта fastcode заменивших старые дельфийские
-
одно другому помогает
|