|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
||||||||||||||||
RAD XE3+ Прочитать три байта05.11.2022, 05:36. Показов 3036. Ответов 54
Метки нет (Все метки)
Так работает:
Как сделать, чтобы оно читало по 3 байта, и устанавливала обратно тоже 3 байта? Желательно именно при такой конфигурации, потому что важна скорость. И массивы будут что-то вроде:
P.s. потоки само собой юзаются. Насколько я понимаю, читать/писать 3 байта вместо 4-х = быстрее. Как сделать?
0
|
||||||||||||||||
| 05.11.2022, 05:36 | |
|
Ответы с готовыми решениями:
54
Как прочитать три разных байта в файле Как прочитать строку до нулевого байта?
|
|
|
|||||||||||
| 05.11.2022, 12:36 | |||||||||||
|
так еще попробуй
хотя даже так, функцию можно и выкинуть))
недавно присал программу там гигабайтные файлы с данными по 2 байта их надо было видоизменить и записать в другой файл в другую структуру даже, т.е. чтение по 2 байта ооооччень долгое, само быстро получилось произвести эту операцию, когда я взял именно указатель на память и "накладывал" в виде шаблона Word тип, получалось чтение все так же по 2 байта, но эстримально быстро Добавлено через 5 минут 1 гигабайт удалось прочитать, видоизменить и записать в новый файл со скоростью 1.5 секунды второй вид файла был по структуре такой же, только там зловреды писали данные с перевернутыми битами, операцию переворота использовал как ассемблеровскуюв ставку, скорость на тот же 1 гигабайт стала уже почти 2 секунды. Тесты проводились на i7 9700k потестируй что будет быстрее)
0
|
|||||||||||
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
|
| 06.11.2022, 01:22 [ТС] | |
|
Блет, очень сложно, очень. Зря я попёрся в эти три байта. Как я не жонглировал с move(), CopyMemory(), или PInteger(@A)^ - всё либо не компилируется, либо access violation. А это я ещё с потоками не пробовал. Сдаюсь.
С "absolute AVal" даже пробовать не буду, всё равно ничего не получится. Оставлю LongWord и не буду парить себе мозги. Всем спасибо.
0
|
|
|
Злостный нарушитель
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
|
|
| 06.11.2022, 01:25 | |
|
0
|
|
| 06.11.2022, 02:08 | |
|
0
|
|
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
||
| 06.11.2022, 02:21 [ТС] | ||
|
Я лишь взял на себя дерзость выжать дополнительные "+2 fps". Не проканало. Мне нужно дополнительно ещё 10 лет исследований, 100 млрд долларов финансирования, и 499 книг по Delphi, чтобы я смог наконец решить эту задачу самостоятельно.
0
|
||
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
||
| 06.11.2022, 02:45 [ТС] | ||
|
За 20 лет думаю управлюсь.
0
|
||
|
|
|
| 06.11.2022, 02:50 | |
|
сядь и разберись что такое указатель, что такое кусок памяти, как хранится там значение, как хранится структура
это все на пальцах самому себе объясняется за 1 вечер))) с помощью логгеров и дебаггеров и ручки с листочком в клеточку, да а книжки. да кто по ним что выучил? ну может что-то теоретическое разве что, а про ютуб я надеюсь была шутка?)) там нету инфы которая помогла бы, там есть только слив говна от "супер-экспертоф" доброй ночи
0
|
|
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
||||||
| 09.11.2022, 10:59 [ТС] | ||||||
|
* спустя 15 лет *
Я понял способ как копировать по три байта! Чтение и замена по 3 байта
А я думал это не возможно. Повезло повезло. И даже ядерный реактор из TRGBTriple и helper'ов с блэкджеком и absolute'ами изобретать не пришлось. Камон, этот раздел "Delphi для начинающих", простейшая задача с копированием байтов. И никто не мог подсказать даже одну строчку типа "move(Pointer(LongWord(varpointer)+cyc1* 3)^, vartcolor,3);"? Обязательно нужно было чтобы я сам додумался, да? Ну коль задача решена, что там по производительности? LongWord: без потоков - 51 fps два потока - 55 fps много потоков - 40 fps 3 байта: без потоков - 28 fps два потока - 36 fps много потоков - 35 fps 4 байта: без потоков - 31 fps два потока - 40 fps много потоков - 36 fps -_- Моё изначальное решение было самым производительным. Шок контент. Самое время мне пофапать на свою офигительность. Если даже копирование по байтам не может справиться, то и всякие TRGBTriple подавно хрень полная. Во славу LongWord'а!
0
|
||||||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|||
| 09.11.2022, 11:15 | |||
|
К тому же, при вызове move выполняется далеко не 3 команды. Думаю, тут быстрее было бы теми самыми массивами типа TRGBTriple. Но опять же, до longword (32 бит) не дотянется, думаю.
0
|
|||
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
|||||||
| 09.11.2022, 11:17 [ТС] | |||||||
|
Что?
У меня 3 байта копируются за раз. Вот, в конце стоит цифра "3":
0
|
|||||||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|
| 09.11.2022, 11:22 | |
|
0
|
|
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
|||||||
| 09.11.2022, 11:30 [ТС] | |||||||
|
тьма ассемблерных команд
"Тьма" <> "3 команды". Я всё ещё что-то понял не так. К тому же, не думаю что TRGBTriple оказался бы лучше. Как я полагаю, LongWord'ом быстрее всего, потому что компилятором на самом низком (доступном мне-простому-смертному) уровне. А move() компилируются в большее количество телодвижений, поэтому и медленнее. Коль кто-то знает способ не-longword'ом и быстрее - я весь во внимании, жуть как интересно.
0
|
|||||||
|
Злостный нарушитель
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
|
|
| 09.11.2022, 13:04 | |
|
0
|
|
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|
| 09.11.2022, 13:05 | |
|
0
|
|
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
||||
| 09.11.2022, 13:43 [ТС] | ||||
|
И второе: У меня есть вопрос. Ну так с чего внизапно друг, TRGBTriple и helper, использующий move() будут работать быстрее моего move()? ЧЯПНТ? Что я понимаю не так? Ох нет, только не говорите, что тут нужно ещё 4 года исследований и 20 млн долларов финансирования. Я более не потяну.
0
|
||||
|
Злостный нарушитель
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
|
|
| 09.11.2022, 13:50 | |
|
0
|
|
|
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|||
| 09.11.2022, 14:16 | |||
|
ugorek, я не вникал (и не собираюсь вникать) в дебри решаемой задачи.
но вот на этот вопрос попробую ответить Добавлено через 2 минуты
0
|
|||
|
42 / 35 / 8
Регистрация: 10.03.2017
Сообщений: 291
|
|||
| 09.11.2022, 14:31 [ТС] | |||
|
Цвет задаётся тремя байтами RGB, вот жеж дасадное разочарование! Чтобы заменить пиксель, его наверное нужно как-то прочитать. А потом записать. Интересно как? Много как. А быстро как? А быстро - longword'ом или я хрен знает. Были ещё варианты, но они благополучно медленные. Ну а эта ссылка Читать не учитаться. Миллион знаний на квадратный сантиметр экрана. После посещения этой страницы я чувствую умопомрачительное просвещение. А если подразумевалась ссылка на MSDN, то что именно мне там нужно было понять? Ну ок, почитал да. А дальше что? У меня не 1000iq, можно конкретнее намекнуть, чем простое "прочитай всё целиком"?
0
|
|||
| 09.11.2022, 14:31 | |
|
Как прочитать значение байта по адресу в оперативке? Как прочитать несколько байтов в файле с n-го байта по m-й байт ?
В переменную типа integer прочитать число длиною в 4 байта Три байта в Int Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|