Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ускорить функцию перевода массива байт в число / 25 сообщений из 133, страница 1 из 6
20.02.2020, 16:53
    #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
20.02.2020, 16:57
    #39929042
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
20.02.2020 16:53, cptngrb пишет:
>
> Как ускорить функцию перевода массива байт в число?
>

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


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

Перестать передавать arr по значению.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2020, 17:25
    #39929058
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
rgreat, )
...
Рейтинг: 0 / 0
20.02.2020, 17:29
    #39929061
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
Dimitry Sibiryakov, это да. я упростил пример. На самом деле передается объект, одним из атрибутов которого является динамический массив
...
Рейтинг: 0 / 0
20.02.2020, 17:33
    #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
20.02.2020, 17:34
    #39929066
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
где-то туплю сильно
...
Рейтинг: 0 / 0
20.02.2020, 17:47
    #39929078
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
не тот порядок байт
...
Рейтинг: 0 / 0
20.02.2020, 17:52
    #39929082
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить функцию перевода массива байт в число
поясни задачу

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

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

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

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

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

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

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

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

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

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


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