Вверх ↑
Этот топик читают: Гость
Ответов: 4628
Рейтинг: 749
#481: 2020-05-27 14:35:35 ЛС | профиль | цитата
Может функция преобразования из строки в Double глючит. Из Double в строку я взял FPC-шную, потому как родная KOL-овская не работала, а обратную - не помню трогал ли. Гляну как-то.

-----
Проблема в портированной функции KOL.Extended2Str() - разное поведение в 32 и 64 битах. Дефайном включил другую точность - вроде работает.

Редактировалось 2 раз(а), последний 2020-06-10 15:06:25
карма: 26

0
Ответов: 4628
Рейтинг: 749
#482: 2020-06-10 11:26:22 ЛС | профиль | цитата
Обновлен компилятор FPC до 3.2.0 RC1

Пакет соответствует ревизии 2337 основного SVN.

Если у вас уже был установлен этот компилятор - перед установкой новой версии выполните HiAsm\compiler\FPC2\unins000.exe и удалите каталог HiAsm\compiler\FPC2 (если останется).

Gik, вроде исправил отображение чисел в 64 битах.
карма: 26

2
Голосовали:Joiner, flud
Ответов: 207
Рейтинг: 14
#483: 2020-06-10 12:35:16 ЛС | профиль | цитата
Установил. Сразу не ставилось из-за моего косяка.
Netspirit, Спасибо за обновление.

Редактировалось 2 раз(а), последний 2020-06-10 13:11:44
карма: 2

0
Ответов: 60
Рейтинг: 0
#484: 2020-06-10 14:01:35 ЛС | профиль | цитата
Netspirit, Спасибо.
карма: 1

0
Ответов: 60
Рейтинг: 0
#485: 2020-06-10 19:27:05 ЛС | профиль | цитата
Теперь не работает MultiStrData с fpc-3.2.0-64. Пример в помощи Hiasm по элементу MultiStrData не работает правильно. С fpc-3.2.0-32 также неправильно работает. С fpc-3.0.4-32 и 64 вроде работает правильно.
Никто не проверял у себя MultiStrData?

Редактировалось 5 раз(а), последний 2020-06-11 17:06:37
карма: 1

0
Ответов: 4628
Рейтинг: 749
#486: 2020-06-12 12:36:49 ЛС | профиль | цитата
Gik, в файле hiStr_Enum.pas (строка 131) поправь функцию FParse():
function FParse(var S: string; const Delimiters: Char): string;
var
P: Integer;
begin
P := Pos(Delimiters, S);

if P = 0 then
begin
Result := S;
S := '';
end
else
begin
Result := Copy(S, 1, P-1);
S := Copy(S, P+1, Length(S));
end;
end;
По кнопке Reverse, вроде, работало правильно?

Редактировалось 1 раз(а), последний 2020-06-12 12:37:32
карма: 26

0
Ответов: 60
Рейтинг: 0
#487: 2020-06-12 13:40:06 ЛС | профиль | цитата
Да. Вроде теперь работает. Спасибо большое.
карма: 1

0
Ответов: 4628
Рейтинг: 749
#488: 2020-06-12 14:29:02 ЛС | профиль | цитата
Мои компоненты шифрования уже поддерживают данный пакет, поэтому может представлять интерес схема тестирования быстродействия для сравнения разных компиляторов.

Редактировалось 1 раз(а), последний 2020-06-12 14:29:33
карма: 26

0
Ответов: 207
Рейтинг: 14
#489: 2020-06-12 15:40:39 ЛС | профиль | цитата
Netspirit, fpc-32,64 работает быстрее. В тексте за 1 000 000 символов, заменяет больше 90 000 слов.
В FPC-64 примерно 450 мс.
В Delphi чуть больше 4.5 секунд.
карма: 2

0
Ответов: 4628
Рейтинг: 749
#490: 2020-06-12 15:43:22 ЛС | профиль | цитата
Какой именно компонент? Просто там в некоторых местах для 64 бит не был портирован ассемблерный код и просто выключен. Но если компонент работает правильно, тогда это не тот случай.

Редактировалось 1 раз(а), последний 2020-06-12 15:44:41
карма: 26

0
Ответов: 207
Рейтинг: 14
#491: 2020-06-12 15:48:11 ЛС | профиль | цитата
Самописный компонент. Могу скинуть в личку с текстом.

Редактировалось 2 раз(а), последний 2020-06-16 15:06:15
карма: 2

0
Ответов: 207
Рейтинг: 14
#492: 2020-06-16 15:06:00 ЛС | профиль | цитата
Netspirit писал(а):
тестирования быстродействия для сравнения разных компиляторов.

Протестировал разные компиляторы.


карма: 2

0
Ответов: 4628
Рейтинг: 749
#493: 2020-06-16 15:50:55 ЛС | профиль | цитата
Хорошо. 64-битный себя неожиданно хорошо показывает. Ещё бы сравнить с 64-битным Delphi: https://transfiles.ru/4s4vv. Больше циклов надо давать, чтобы минимальное время теста было хотя бы 6 секунд. Тебе 300 будет нормально.

Редактировалось 2 раз(а), последний 2020-06-16 16:00:11
карма: 26

0
Ответов: 207
Рейтинг: 14
#494: 2020-06-16 16:45:43 ЛС | профиль | цитата
300 циклов.


карма: 2

0
Ответов: 4628
Рейтинг: 749
#495: 2020-06-16 17:04:11 ЛС | профиль | цитата
Надо же. FPC-32 в среднем на том же уровне что новый Delphi-32, а FPC-64 обгоняет Delphi-64. Я у себя тестировал - у меня FPC одинаково проигрывал всем Delphi, а старый Delphi 4 и новый Delphi XE8-32 показывали одинаковые результаты.
В целом в кодах компонентов используются некоторые оптимизации под разные компиляторы по результатам тестирования, позволившие в некоторых случаях заметно ускорить FPC.

Ускорить алгоритм Serpent у меня никак не получилось. В референсной имплементации, насколько я помню, там раундовые процедуры вообще были развернуты внутри основных процедур шифрования/дешифрования. С какой скоростью оно в оригинале работало - не знаю. Хотя может я неудачную реализацию портировал: вроде, есть ещё какая-то на основе таблиц.

Редактировалось 4 раз(а), последний 2020-06-16 17:21:33
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)