Страница 6 из 9

Re: Программистские задачки и хитрости

Добавлено: 21 апр 2020, 15:30
MX_Master
Ну что, товарищи :) механизм общей памяти с программными spinlock'ами таки обогнал по скорости систему двунаправленного буфера. Самый увесистый кусок кода удерживает общую память не дольше 2-3 микросекунд. В системе сообщений (два буфера) аналогичный обмен данными мог занимать десятки микросекунд.

Следующий шаг - проверка скорости передачи с аппаратными spinlock'ами...

Re: Программистские задачки и хитрости

Добавлено: 21 апр 2020, 18:35
Duhas
ежели объем тот же - что-то ой разница. я думаю большой вопрос в корректности реализации или еще каких нюансах.

Re: Программистские задачки и хитрости

Добавлено: 22 апр 2020, 12:17
MX_Master
Вощём, с аппаратными spinlock'ами ещё быстрее на 200-300 нсек. Что ожидаемо :)
Duhas писал(а):ежели объем тот же - что-то ой разница. я думаю большой вопрос в корректности реализации или еще каких нюансах.
Система сообщений (2 буфера) даже в теории имеет больше накладных расходов. Просто, за счёт двойного копирования данных. Сначала в буфер, а потом из него по конкретным местам. Накладывается ещё и поиск непрочитанных сообщений. Ну и кривая реализация от автора тоже добавляет накладных :freak:

Re: Программистские задачки и хитрости

Добавлено: 22 апр 2020, 16:35
Duhas
дык оно происходит в разных процессах )

хотя вопрос как там доступ к памяти реализован и т.д. ну если все хорошо, то все хорошо )

Re: Программистские задачки и хитрости

Добавлено: 25 май 2020, 17:34
Serg
Кто в теме IP: почему работает? :)

Код: Выделить всё

$ ping -c 5 192.168.1.555
...
--- 192.168.1.555 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4128ms
rtt min/avg/max/mdev = 0.214/0.294/0.334/0.042 ms

Re: Программистские задачки и хитрости

Добавлено: 25 май 2020, 19:37
Duhas
переполнение байтовой переменной?

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 00:09
Serg
Duhas писал(а):переполнение байтовой переменной?
Нет. IPv4 адрес - это uint32_t практически во всех реализациях.
Надо ширше мыслить! ;)

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 00:22
Duhas
ну я в кишки не заглядывал даже ) так пальцем в небо,

шо, резолвится в 192,168,3,43?

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 02:19
Serg
Нет. Адрес в сети 192.168.1.0/24 :)

Задачка не совсем про программирование, а про IP и на сообразительность, просто более подходящей темы нет.
С другой стороны программист, мыслящий стандартами - так себе программист, скорее просто кодер. :)

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 05:23
wldev
Адрес 192.168.1.138
1000101011-555
10001010-138
Префикс 24бита.
Далее отбрасывается 2бита.

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 05:56
merkwurdigliebe
UAVpilot писал(а):почему работает?
echo 127.0.0.1 192.168.1.555 >>/etc/hosts

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 09:42
nevkon
Оно не обязательно должно быть где-то объявлено. Помню было на обучении, но в чем прикол уже не помню.

Re: Программистские задачки и хитрости

Добавлено: 26 май 2020, 13:28
Serg
merkwurdigliebe писал(а):echo 127.0.0.1 192.168.1.555 >>/etc/hosts
:good:

Re: Программистские задачки и хитрости

Добавлено: 08 дек 2020, 10:30
Duhas
сложно назвать задачкой, однако:
пишу библиотечку для дисплея, хочу выводить или не выводить лидирующие нули: "030" или " 30"

для этой задачи в классе дисплея заведена переменная uint8_t _leadingZeroes.
она инициализирована нулем в конструкторе и имеет функцию для доступа элементарного вида:
void HD44780::LeadingZeroes(uint8_t on)
{
_leadingZeroes = on;
}
А вот дальше начинается интересное, в процессе написания было поймано интересное поведение компилятора
на кусочке кода: (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

			if (Ts)
				Send_Data(Ts+0x30);
			else if (_leadingZeroes)
				Send_Data(' ');
			else
				Send_Data(Ts+0x30);
если из него вырезать последний else

получается
такое приключение (для просмотра содержимого нажмите на ссылку)
HD44780.o: In function `HD44780::SendNumber(signed char)':
C:\!AVR\I2C_display\I2C_display\Debug/.././HD44780.cpp:407:(.text._ZN7HD4478010SendNumberEa+0xcc): relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
collect2.exe(0,0): error: ld returned 1 exit status
на другую переменную в условии реагирует нормально, собственно не знаю зачем тут это, просто не понимаю чего собственно может не нравится

ПС Atmel Studio 7, AVR8/GNU C Compiler : 5.4.0

Re: Программистские задачки и хитрости

Добавлено: 08 дек 2020, 18:41
Serg
Ничёго не понял:
Какой именно "else"? Покажи вариант с ним и без него.
На какую именно переменную, в куске кода их две.
Строка 407 - это какая именно?
Значение у "on" какое?

И почему-бы не упростить до такого?

Код: Выделить всё

if (Ts || !_leadingZeroes)
    Send_Data(Ts+0x30)
else
    Send_Data(' ');
P.S. Используй теги [code] [/code]

Re: Программистские задачки и хитрости

Добавлено: 08 дек 2020, 19:02
alex_sar
Duhas писал(а): просто не понимаю чего собственно может не нравится
https://www.technovelty.org/c/relocatio ... t-wtf.html

Re: Программистские задачки и хитрости

Добавлено: 09 дек 2020, 00:47
calabr
Duhas писал(а): C:\!AVR\I2C_display\I2C_display\Debug/.././HD44780.cpp:407:(.text._ZN7HD4478010SendNumberEa+0xcc): relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
Вот более близкое к AVR описание проблемы:
https://www.avrfreaks.net/forum/error-r ... ncated-fit

Думаю нужно поиграться с опциями линкера -relax, -no-relax,
Поменять порядок объявлнгия переменных в коде...

Re: Программистские задачки и хитрости

Добавлено: 09 дек 2020, 02:49
Serg
Порядок объявления переменных тут скорее всего не при чем - по твоей-же ссылке есть объяснение. :)
Нужно больше подробностей, особенно с вариантами экспериментов и полный текст самой функции SendNumber. А ещё лучше ассемблерный код, который получается (avr-gcc -S).

Странно, что сам компилятор с этим сам не справляется, хотя его версия довольно древняя. По любому полный текст функции нужен.

Re: Программистские задачки и хитрости

Добавлено: 09 дек 2020, 07:57
kochevnik
Может кто с esp32 играется?
Столкнулся с проблемой загрузки файлов через веб интерфейс, даже дефолтный пример глючит, если в файле пара строк текста и в конце три дефиса "---"
Может кто сталкивался и как то решили?

Re: Программистские задачки и хитрости

Добавлено: 09 дек 2020, 10:13
alex_sar
kochevnik писал(а): Может кто с esp32 играется?
игрался, но upload не пробовал.
а как конкретно глючит? в консоли через monitor что показывает в этот момент?