powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Официальный релиз библиотеки "CachedTexts"
25 сообщений из 83, страница 2 из 4
Официальный релиз библиотеки "CachedTexts"
    #39188975
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
fd00chзато сколько стонов в сторону компилятора delphi, который, якобы, генерит тормозной код

Можно было бы проверить работу на старом древнем Delphi 7,
но библиотеки не компилятся, если выключить ассемблер.
В частности, типы строк смешаны - String и WideString.

type
UniConv.UnicodeString = WideString; { из модуля UniConv.pas }

UnicodeString = UniConv.UnicodeString;

описано как:
Код: pascal
1.
procedure ByteString.ToLowerUnicodeString(var S: UnicodeString);


при этом вызов идёт со String:
Код: pascal
1.
2.
3.
4.
function ByteString.ToLowerString: string;
begin
  ToLowerUnicodeString(Result);
end;



так что с семёркой с отключением ассемблера не склалось,
а без отключения ассемблера вот такие результаты после компиляции в Delphi 7:

автор1) CachedByteWriter ANSI --> UTF8... 985ms done.
2) CachedByteWriter UTF8 --> UTF8... 813ms done.
3) CachedUTF16Writer --> UTF8... 1844ms done.
4) CachedUTF32Writer --> UTF8... 1781ms done.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39188988
Печень белого медведя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chзато сколько стонов в сторону компилятора delphi, который, якобы, генерит тормозной код
Ассемблер сам по себе не обеспечивает преимущества.
Если не ошибаюсь, речь шла о сравнении кода Delphi с си++ - компиляторами (например, от Intel).

Напомню: компилятор дельфийский написан на сях...
...а IDE вполне себе на Delphi.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39188995
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печень белого медведя, прикол в том, что не только лишь все из стонущих могут написать на ассемблере более производительный код, зато хаять горазд каждый, как и строчить портянки на том же асме
Ну а с производителем процессоров соревноваться в компиляторах загнивающей конторе вообще чревато))
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189000
Печень белого медведя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chПечень белого медведя, прикол в том, что не только лишь все из стонущих могут написать на ассемблере более производительный код, зато хаять горазд каждый, как и строчить портянки на том же асме
Ну а с производителем процессоров соревноваться в компиляторах загнивающей конторе вообще чревато))
Большинство (за исключением отдельных личностей, вроде ТС) все же понимают, что производительность - вещь далеко не всегда самая важная.
Люди вполне себе и C# с Java используют, и FoxPro, и VB c Python.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189009
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печень белого медведя...а IDE вполне себе на Delphi.
Когда-то - может быть, а сейчас это дикая и глючная помесь всего со всем.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189010
Печень белого медведя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanПечень белого медведя...а IDE вполне себе на Delphi.
Когда-то - может быть, а сейчас это дикая и глючная помесь всего со всем.
Ой, точно. Начиная с D2005го там треш и угар.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189028
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

При оформлении (шрифт, жирность и пр.) не злоупотребляй, плиз.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189319
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да начали тут про ассемблер/неассемблер :)
Что там в UniConv на ассемблере я уже не помню. Но думаю в данном случае они не влияют, а разница в 16мск - стандартная погрешность GetTickCount. Что до остальных модулей - то вопрос в копировании памяти. На новых интеловских машинах снова стал быстрее REP MOVS. Актуален этот вопрос здесь или нет - я не знаю. Но каким способом копировать память лучше - вопрос открытый. Другого на ассемблере я вроде не писал, старался делать ЯВУ. Небольшое исключение - эмуляция инлайнов на старых компиляторах, но под X64 они поддерживаются.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189400
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOUвопрос в копировании памяти. На новых интеловских машинах снова стал быстрее REP MOVS.
из чего следует сделать вывод, что писать стоит на паскале, имхо.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189440
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Нет
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189444
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUdefecator,

НетА на чём тогда?
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189452
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GatorSOFT FOR YOUdefecator,

НетА на чём тогда?
ТС очень любит ассемблер, вот только ассемблер не любит его, судя по простейшим тестам его же библиотеки
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189510
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Нет :)
Я расцениваю ассемблер как один из инструментов. ЯВУ транслируется в набор машинных команд, ассемблер транслируется в набор машинных команд, просто на ассемблере можно сделать некоторые вещи тоньше. В данном случае речь в первую очередь идёт о копировании памяти. А там на одних машинах могут быть одни результаты, на вторых - другие. И это отличная пища для размышлений, за обнаружение которой тебе спасибо! Кстати если есть возможность - выложи пожалуйста различные варианты с/без ассемблера в исходниках и бинарниках под 2 платформы: x86 и x64. Можно будет погонять на разных машинах, потрейсить дизасм - и в итоге придти к какому-то оптимальному решению, для большинства новых процессоров.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189633
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUМожно будет погонять на разных машинах, потрейсить дизасм - и в итоге придти к какому-то оптимальному решению, для большинства новых процессоровя ранее вопрос задавал, ты фасткодеров обогнал чтоли?
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189706
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,

Ты имеешь ввиду их реализацию Move? Нет, здесь другая специфика. У них Move имеет универсальное применение, а в данном случае речь идёт о копировании небольшого ASCII буфера на стеке в буфер записи (CachedWriter). И в данном тесте речь идёт о числах от 1 до 1000, т.е. копирование от 1 до 4 байт. Если я ничего не путаю.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189725
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUТы имеешь ввиду их реализацию Move?да, я о fastmove например от John O'Harrow. думал ты значительные куски разом копируешь
SOFT FOR YOUв данном случае речь идёт о копировании небольшого ASCII буфера на стеке в буфер записи (CachedWriter). И в данном тесте речь идёт о числах от 1 до 1000, т.е. копирование от 1 до 4 байттакие маленькие объемы тогда вроде ч/з movzx/mov делались а куда там rep девать??
SOFT FOR YOUЕсли я ничего не путаюне знай, ты ж писал, а я не смотрел
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39189742
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,

Надо разбираться. Асм-вставки, если я не путаю - сделаны как раз для того, чтобы не дергать по таким вещам стандартный Move, эта тема работает для 0..32 байтов. В случае с x64, там вообще ничего не ассемблировано, тем более фесткода. Все сделано в лоб, тупо. И на этом тесте такой подход оказался выгоднее. Но это не значит, что в целом вопрос копирования памяти не стоит пересматривать и подбирать более оптимальный вариант.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202466
Кар-Кар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка!
Вообщем в UTF16String. toFloat . Число 5.444123456e+300 конвертируется, но если экспа уже 301 и более - нет. Тоже самое с отрицательной экспой. У отрицательной кстати ещё ненормальные числа есть, которые E-314 аж, Power10 их может делать, но прикол с Power10 в том, что иногда у него цепочка зависимости и нужно сделать инструкцию pause после него, а иногда не нужно, в зависимости от числа и степени, надо копать куда-то. Из-за этого скорость скачет в 2(!) раза туда-сюда в зависимости от числа [у меня по меньшей мере].

Читал тему, никакого асма не видел в юнитах(так, пару вставок). Хотите проблем, пожалуйста изврат едишн:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
  .ALIGN 16
@@parse:
  movdqu    xmm1,[r8]      //pwidechar
  pcmpistri xmm3,xmm1,$15  //words + range + negative_polarity
  jb        @@next
  cmp       ecx,r9d        //cmp to length
  cmovg     ecx,r9d
  cmp       ecx,8
  jne       @@next
  psubw     xmm1,xmm4
  pmullw    xmm1,xmm5
  phaddw    xmm1,xmm1
  phaddw    xmm1,xmm1
  movd      eax,xmm1
  movzx     ecx,ax
  shr       eax,16
  imul      ecx,ecx,10000
  add       eax,ecx
  cvtsi2sd  xmm1,eax
  mulsd     xmm0,qword ptr [@@muls+00]   //1e+8
  addsd     xmm0,xmm1
  add       r8,16
  sub       r9d,8
  jg        @@parse
  jmp       @@leave

  .ALIGN 16
@@next:
  movzx     eax,word ptr [r8]
  sub       eax,$30
  cmp       eax,$09
  ja        @@char
  cvtsi2sd  xmm1,eax
  mulsd     xmm0,qword ptr [@@muls+08]  //1e+1
  addsd     xmm0,xmm1
  add       r8,2
  dec       r9d
  jg        @@next
  jmp       @@leave

...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202494
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кар-Кар,

Спасибо за реакцию и тестирование.
В целом - это не ошибка, а заложенное ограничение. Я обратил внимание, что под x64 (стандартная) функция на определённой экспоненте вообще вылетает с эксепшном. И оно не намного больше 300. Кроме того библиотека заточена на максимальную производительность и длину экспоненты в символах тоже имело смысл ограничить. Кстати у меня такие числа переводятся во Float точнее, чем в стандартной либе по Power10. А тем более под x64.
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202557
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUу меня такие числа переводятся во Float точнеехотелось бы услышать методику выявления точности
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202605
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM,

Берём строку, например '5.444123456e+300'
Получаем из неё Float обычным образом и с помощью CachedString
Потом смотрим дельту числа-в-строке и возвращаемого флоата
Где дельта меньше - там и точнее
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202641
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печень белого медведяНапомню: компилятор дельфийский написан на сях...
Пруф?
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202684
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,

Если можно без офтопиков )
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202885
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU, я как бы не придираюсь, но всё же интересно: смотрим дельту числа-в-строке и возвращаемого флоататипа так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
const
 sF = '5.444123456e+300';
var 
 d1, d2 : TStringFloatDelta;
begin
 d1 := sF - F1(sF);
 d2 := sF - F2(sF);
 ...


?
...
Рейтинг: 0 / 0
Официальный релиз библиотеки "CachedTexts"
    #39202924
Точность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Точность" не должна быть "выше" или "ниже", она должна быть такой же. Ибо поведение должно быть предсказуемым.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Официальный релиз библиотеки "CachedTexts"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]