powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ускорить функцию перевода массива байт в число
25 сообщений из 133, страница 1 из 6
Ускорить функцию перевода массива байт в число
    #39929039
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ускорить функцию перевода массива байт в число?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function to_num(arr: arBytes; const i,j: integer):UInt64;
var
  k: integer;
begin
  Result:= arr[i];
  for k:= (i+1) to j do begin
    Result:= Result shl 8;
    Result:= Result or arr[k];
end;
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929042
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.02.2020 16:53, cptngrb пишет:
>
> Как ускорить функцию перевода массива байт в число?
>

на собеседовании шо-ле задали?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929043
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, нет)).
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929045
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
много раз в циклах используется, хочется побыстрее
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929047
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
профилируй
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929052
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
for k:= (i+1) to j do 
  Result:=(Result shl 8) or arr[k];


Гы.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929056
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbКак ускорить функцию перевода массива байт в число?

Перестать передавать arr по значению.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929058
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat, )
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929061
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, это да. я упростил пример. На самом деле передается объект, одним из атрибутов которого является динамический массив
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929063
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думал, что так быстрее будет, но возвращает другое число

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function to_num(arr: arBytes; const i,j: integer):UInt64;
var
  arr: array [0..7] of byte;
  r: UInt64 absolute arr;
begin
  move(arr[i], arr[0], (j-i)+1);
Result:= r;
end;
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929066
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где-то туплю сильно
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929078
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не тот порядок байт
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929082
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поясни задачу

если массив содержит [1], [2], [3], [4], [5], [6], [7], [8], тебе на выходе надо получить 12345678?

если да, то твой способ вполне себе подходящий: для UInt64 это всего восемь итераций, внутри которых только сдвиг и суммирование. Это очень быстро.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929083
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача в 1-м посте написана.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929086
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Компилируешь в 32 или 64 бита?
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929088
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, в данном случае 64
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929090
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Как ускорить функцию
сделать без цикла и на асме
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929092
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
в данном случае 64

Жаль. 32-битный вариант можно было ускорить в ~2 раза :)
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929094
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, это как?
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929096
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Сделать case по количеству байт и прописать выражение для каждого варианта.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929118
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

бред не ускоряют, его переписывают.

Приведи более полные примеры с вызовом этой функции,
чтобы можно было понять замысел автора.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929124
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это какое-то странное CRC.
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929125
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.02.2020 18:43, rgreat пишет:
> Это какое-то странное CRC.

скорее странное BCD.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929126
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbгде-то туплю сильно

Практически везде. Начиная с того, что просишь диагноз по фотографии дальнего родственника
больного. Тормоза не в том коде, который ты показал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорить функцию перевода массива байт в число
    #39929129
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийскорее странное BCD.

Вы что, предыдущие топики аффтара забыли?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 133, страница 1 из 6
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ускорить функцию перевода массива байт в число
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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