Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Разбираюсь с одним модулем. Под него есть готовые библиотеки. Наткнулся на такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. онии продвигают указатель pData += 2; но данные кладут всегда в начальные индексы pData[0] = tmp[0]; pData[1] = tmp[1]; я что то не понимаю? по моему должно быть так *pData++ = tmp[0]; *pData++ = tmp[1]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 10:27 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, в "странном" коде единственный инкремент, а в вашем - два. Одна лишняя операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:00 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Насколько я понимаю, в "странном" коде единственный инкремент, а в вашем - два. Одна лишняя операция. pData += 2; не равно pData++; pData++; ? array[index] - указывает на абсолютный адрес (?) если мы продвинем указатель array += 2 - то array[0] - это не будет array[0+2]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:05 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7 pData += 2; не равно pData++; pData++; ? Нет. Это же две инструкции вместо одной. Вот пустой tmp[2] меня напрягает. Откуда код? Ядро что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:15 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
crutchmasterЯдро что-ли? amazon-freertos-optiga-trust ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:17 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7 pData += 2; не равно pData++; pData++; ? Я сказал - "одна лишняя операции".array[index] - указывает на абсолютный адрес (?)Нет в Це Pascal-евых массивов. Есть разные формы адресной арифметики.если мы продвинем указатель array += 2 - то array[0] - это не будет array[0+2].Есть массив переменных. Можно взять указатель на начало массива и получать нужный элемент, используя индекс. Можно менять значение указателя и получать нужный элемент без всякого индекса. Ну или "по индексу ноль", если вам угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:18 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
crutchmaster jenya7 pData += 2; не равно pData++; pData++; ? Нет. Это же две инструкции вместо одной. Вот пустой tmp[2] меня напрягает. Откуда код? Ядро что-ли? int i = 0; i+=2; результат 2. int i = 0; i++; i++; результат 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:22 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Можно взять указатель на начало массива и получать нужный элемент, используя индекс. Можно менять значение указателя и получать нужный элемент без всякого индекса. Ну или "по индексу ноль", если вам угодно. если это так то это серьезный фак в С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:24 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7 если это так то это серьезный фак в С Нет. Жонглирование указателями, гексогеном и острыми бритвами, крутя педали одноколёсного велосипеда - обычная практика в разработке на си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:41 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7, Одна операция, результат - 2 Две операции, результат - 2 Если нет разницы, то зачем делать больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 11:43 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7 онии продвигают указатель pData += 2; но данные кладут всегда в начальные индексы pData[0] = tmp[0]; pData[1] = tmp[1]; я что то не понимаю? по моему должно быть так *pData++ = tmp[0]; *pData++ = tmp[1]; это одно и тоже, дальше дело вкуса как читабельнее написать. На вкус и цвет все фломастеры разные (с) Лично я за исходный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 12:25 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Dima T, Это не дело вкуса. Во втором варианте на операцию больше будет жи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 12:38 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
crutchmaster Dima T, Это не дело вкуса. Во втором варианте на операцию больше будет жи! Не факт, надо код после компиляции смотреть. +=2 это сложение, а ++ это инкремент, второе легче в выполнении и короче записывается. Да и оптимизатор проца скорее всего запараллелит выполнение двух ++, т.е. в итоге получим примерно одно и тоже по производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 12:46 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
я может чего не понимаю, но зачем здесь tmp? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 12:48 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
[quot Dima T#22074549] jenya7 онии продвигают указатель это одно и тоже, дальше дело вкуса как читабельнее написать. На вкус и цвет все фломастеры разные (с) Лично я за исходный вариант. исходный вариант как минимум путает. нужно держать в голове что pData[0] это уже не нулевой индекс, а первый индекс текущего указателя. выстрел в ногу может мягко перейти в выстрел в голову. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 13:42 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Dima T Да и оптимизатор проца скорее всего запараллелит выполнение двух ++ Это вряд ли: они зависимы. А вот два независимых присваивания он запараллелит гарантированно. jenya7 исходный вариант как минимум путает Только слабых на голову. Но таким в области низкоуровневой оптимизации делать нечего. Таки да, первый код работает заметно быстрее второго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 14:58 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Dima T Да и оптимизатор проца скорее всего запараллелит выполнение двух ++ Это вряд ли: они зависимы. А вот два независимых присваивания он запараллелит гарантированно. это может сделать оптимизатор компилятора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 15:08 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 ...но зачем... код мутный, от слова совсем. 1) есть закос на различия по платформе и дохлые компиляторы 2) нарушена общая логика в решении 3) не однозначное поведение алгоритма индусский код одним словом... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 15:09 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Изопропил Dimitry Sibiryakov пропущено... Это вряд ли: они зависимы. А вот два независимых присваивания он запараллелит гарантированно. это может сделать оптимизатор компилятора если на компилятор вешать оптимизацию, которую должен делать человек, у человека всегда будут проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 16:44 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
А зачем там таймаут. Я полагаю можно переписать так и смысл тот-же. +1 к tmp. Тоже убрал. Лишние скобАчки убрал. Задлянафига нам скобАчки? +Egyptian-style bracers. Я делаю это машинально. (Сорян привыкли руки к топорам). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И гдеж тот господин который рекламировал PVS. Когда он нужен - его нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 18:28 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
jenya7 исходный вариант как минимум путает. нужно держать в голове что pData[0] это уже не нулевой индекс, а первый индекс текущего указателя. выстрел в ногу может мягко перейти в выстрел в голову. :) По мне так все пишущие на С должны помнить как 2+2=4 что pData[1] и *(pData+1) это одно и тоже, ИМХО первая запись красивее, т.е. читабельнее, но могут быть применены обе, это не должно путать. PS Считающие что быстрее pData+=2 учтите этот неявный +1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 18:44 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Честно я-бы забил. Я чем больше смотрю на процесс разработки - тем больше уверен что correctness - важнее чем гипотетический и недоказанный performance. Главное - написать код без ошибок. Код который работает правильно. А оптимизации уже пойдут потом. Кроме того интеллект компиллеров шибко крепчает и они спокойно распознают много-ходовки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 18:52 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
И надо еще посмотреть какие коды ошибок возвращает HAL_SPI_Receive_IT() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 19:55 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
полудух если на компилятор вешать оптимизацию, которую должен делать человек, у человека всегда будут проблемы. а должен ли? на интеле например, давно уже i++ транслируется в ADD r,1 а не INC r зачем мешать оптитимизатору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 20:01 |
|
||
|
Странный код
|
|||
|---|---|---|---|
|
#18+
Я-бы переписал такой код. Код: plaintext 1. Здесь - неочевидна арифметика числовых интервалов. Ну... не в данном коде а вообще в принципе. Типа Код: java 1. Если есть возможность объединять предикаты там строгое неравенство соединить с равенством нулю - то ябы сокращал количество предикатов. Опять же. Не в данном коде а вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2020, 20:21 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39923253&tid=1339832]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 426ms |

| 0 / 0 |
