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

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

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


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]

одно другому помогает


Страницы: 1 2 версия для печати

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

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







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


Наверх

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