Программистские задачки и хитрости
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программистские задачки и хитрости
Ну что, товарищи механизм общей памяти с программными spinlock'ами таки обогнал по скорости систему двунаправленного буфера. Самый увесистый кусок кода удерживает общую память не дольше 2-3 микросекунд. В системе сообщений (два буфера) аналогичный обмен данными мог занимать десятки микросекунд.
Следующий шаг - проверка скорости передачи с аппаратными spinlock'ами...
Следующий шаг - проверка скорости передачи с аппаратными spinlock'ами...
-
- Мастер
- Сообщения: 1951
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Программистские задачки и хитрости
ежели объем тот же - что-то ой разница. я думаю большой вопрос в корректности реализации или еще каких нюансах.
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Программистские задачки и хитрости
Вощём, с аппаратными spinlock'ами ещё быстрее на 200-300 нсек. Что ожидаемо
Система сообщений (2 буфера) даже в теории имеет больше накладных расходов. Просто, за счёт двойного копирования данных. Сначала в буфер, а потом из него по конкретным местам. Накладывается ещё и поиск непрочитанных сообщений. Ну и кривая реализация от автора тоже добавляет накладныхDuhas писал(а):ежели объем тот же - что-то ой разница. я думаю большой вопрос в корректности реализации или еще каких нюансах.
-
- Мастер
- Сообщения: 1951
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Программистские задачки и хитрости
дык оно происходит в разных процессах )
хотя вопрос как там доступ к памяти реализован и т.д. ну если все хорошо, то все хорошо )
хотя вопрос как там доступ к памяти реализован и т.д. ну если все хорошо, то все хорошо )
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
Кто в теме 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
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1951
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Программистские задачки и хитрости
переполнение байтовой переменной?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
Нет. IPv4 адрес - это uint32_t практически во всех реализациях.Duhas писал(а):переполнение байтовой переменной?
Надо ширше мыслить!
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1951
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Программистские задачки и хитрости
ну я в кишки не заглядывал даже ) так пальцем в небо,
шо, резолвится в 192,168,3,43?
шо, резолвится в 192,168,3,43?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
Нет. Адрес в сети 192.168.1.0/24
Задачка не совсем про программирование, а про IP и на сообразительность, просто более подходящей темы нет.
С другой стороны программист, мыслящий стандартами - так себе программист, скорее просто кодер.
Задачка не совсем про программирование, а про IP и на сообразительность, просто более подходящей темы нет.
С другой стороны программист, мыслящий стандартами - так себе программист, скорее просто кодер.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- wldev
- Мастер
- Сообщения: 1641
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Программистские задачки и хитрости
Адрес 192.168.1.138
1000101011-555
10001010-138
Префикс 24бита.
Далее отбрасывается 2бита.
1000101011-555
10001010-138
Префикс 24бита.
Далее отбрасывается 2бита.
- merkwurdigliebe
- Мастер
- Сообщения: 609
- Зарегистрирован: 17 дек 2013, 22:14
- Репутация: 580
- Откуда: București
- Контактная информация:
Re: Программистские задачки и хитрости
echo 127.0.0.1 192.168.1.555 >>/etc/hostsUAVpilot писал(а):почему работает?
-
- Почётный участник
- Сообщения: 2395
- Зарегистрирован: 17 июл 2015, 10:25
- Репутация: 302
- Настоящее имя: Константин
- Откуда: Балаково (Саратовская обл.)
- Контактная информация:
Re: Программистские задачки и хитрости
Оно не обязательно должно быть где-то объявлено. Помню было на обучении, но в чем прикол уже не помню.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
merkwurdigliebe писал(а):echo 127.0.0.1 192.168.1.555 >>/etc/hosts
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1951
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Программистские задачки и хитрости
сложно назвать задачкой, однако:
пишу библиотечку для дисплея, хочу выводить или не выводить лидирующие нули: "030" или " 30"
для этой задачи в классе дисплея заведена переменная uint8_t _leadingZeroes.
она инициализирована нулем в конструкторе и имеет функцию для доступа элементарного вида:
void HD44780::LeadingZeroes(uint8_t on)
{
_leadingZeroes = on;
}
А вот дальше начинается интересное, в процессе написания было поймано интересное поведение компилятора если из него вырезать последний else
получается на другую переменную в условии реагирует нормально, собственно не знаю зачем тут это, просто не понимаю чего собственно может не нравится
ПС Atmel Studio 7, AVR8/GNU C Compiler : 5.4.0
пишу библиотечку для дисплея, хочу выводить или не выводить лидирующие нули: "030" или " 30"
для этой задачи в классе дисплея заведена переменная uint8_t _leadingZeroes.
она инициализирована нулем в конструкторе и имеет функцию для доступа элементарного вида:
void HD44780::LeadingZeroes(uint8_t on)
{
_leadingZeroes = on;
}
А вот дальше начинается интересное, в процессе написания было поймано интересное поведение компилятора если из него вырезать последний else
получается на другую переменную в условии реагирует нормально, собственно не знаю зачем тут это, просто не понимаю чего собственно может не нравится
ПС Atmel Studio 7, AVR8/GNU C Compiler : 5.4.0
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
Ничёго не понял:
Какой именно "else"? Покажи вариант с ним и без него.
На какую именно переменную, в куске кода их две.
Строка 407 - это какая именно?
Значение у "on" какое?
И почему-бы не упростить до такого?
P.S. Используй теги [code] [/code]
Какой именно "else"? Покажи вариант с ним и без него.
На какую именно переменную, в куске кода их две.
Строка 407 - это какая именно?
Значение у "on" какое?
И почему-бы не упростить до такого?
Код: Выделить всё
if (Ts || !_leadingZeroes)
Send_Data(Ts+0x30)
else
Send_Data(' ');
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 937
- Зарегистрирован: 04 янв 2019, 15:19
- Репутация: 146
- Настоящее имя: Calabr
- Откуда: Киев
- Контактная информация:
Re: Программистские задачки и хитрости
Вот более близкое к AVR описание проблемы:
https://www.avrfreaks.net/forum/error-r ... ncated-fit
Думаю нужно поиграться с опциями линкера -relax, -no-relax,
Поменять порядок объявлнгия переменных в коде...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Программистские задачки и хитрости
Порядок объявления переменных тут скорее всего не при чем - по твоей-же ссылке есть объяснение.
Нужно больше подробностей, особенно с вариантами экспериментов и полный текст самой функции SendNumber. А ещё лучше ассемблерный код, который получается (avr-gcc -S).
Странно, что сам компилятор с этим сам не справляется, хотя его версия довольно древняя. По любому полный текст функции нужен.
Нужно больше подробностей, особенно с вариантами экспериментов и полный текст самой функции SendNumber. А ещё лучше ассемблерный код, который получается (avr-gcc -S).
Странно, что сам компилятор с этим сам не справляется, хотя его версия довольно древняя. По любому полный текст функции нужен.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 224
- Зарегистрирован: 13 окт 2013, 16:24
- Репутация: 9
- Контактная информация:
Re: Программистские задачки и хитрости
Может кто с esp32 играется?
Столкнулся с проблемой загрузки файлов через веб интерфейс, даже дефолтный пример глючит, если в файле пара строк текста и в конце три дефиса "---"
Может кто сталкивался и как то решили?
Столкнулся с проблемой загрузки файлов через веб интерфейс, даже дефолтный пример глючит, если в файле пара строк текста и в конце три дефиса "---"
Может кто сталкивался и как то решили?